Submission #163175


Source Code Expand

#include <map>
#include <queue>
#include <cstdio>
using namespace std;
typedef pair<int,int> pii;
typedef pair<pair<int,int>,int> ppiii;
int M[1001][1001];
int D[4][2]={{-1,0},{0,-1},{0,1},{1,0}};

map<pii,pii>back;
void backtrack(int d,pii cur){
	if(back[cur]==cur){
		printf("%d\n",d);
	}else{
		backtrack(d+1,back[cur]);
	}
	//printf("%d %d\n",cur.first,cur.second);
}

char s;
int main(){
	int n,m,i,j,x,y;
	pii start,goal;
	scanf("%d%d%d%d%d%d",&m,&n,&i,&j,&x,&y);getchar();
	start=make_pair(i-1,j-1);
	goal=make_pair(x-1,y-1);
	for(i=0;i<m;getchar(),i++)for(j=0;j<n;j++){
		s=getchar();
		switch(s){
			case '.':M[i][j]=0;break;
			case '#':M[i][j]=1;break;
		}
	}
	vector<pii> v;
	queue<ppiii> q;
	map<pii,int>visit;
	v.push_back(start);
	q.push(make_pair(start,0));
	visit[start]=0;
	back[start]=start;
	for(;!q.empty();){
		ppiii cur=q.front();q.pop();
		for(i=0;i<4;i++){
			int nexty=cur.first.first+D[i][0];
			int nextx=cur.first.second+D[i][1];
			pii next=make_pair(nexty,nextx);
			if(
				0<=nexty&&nexty<m &&
				0<=nextx&&nextx<n &&
				!M[nexty][nextx] &&
				visit.find(next)==visit.end()
			){
				v.push_back(next);
				q.push(make_pair(next,cur.second+1));
				visit[next]=cur.second+1;
				back[next]=cur.first;
				if(next==goal){
					backtrack(0,goal);
					return 0;
				}
			}
		}
	}
	//queue exhausted
	puts("Fail");
}

Submission Info

Submission Time
Task C - 幅優先探索
User leafmoon
Language C++ (G++ 4.6.4)
Score 100
Code Size 1414 Byte
Status AC
Exec Time 31 ms
Memory 1432 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:24:41: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 3
AC × 25
Set Name Test Cases
Sample subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt
All subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt
Case Name Status Exec Time Memory
subtask0_sample01.txt AC 20 ms 924 KB
subtask0_sample02.txt AC 21 ms 800 KB
subtask0_sample03.txt AC 24 ms 1308 KB
subtask1_01.txt AC 23 ms 1184 KB
subtask1_02.txt AC 23 ms 1184 KB
subtask1_03.txt AC 21 ms 1176 KB
subtask1_04.txt AC 23 ms 1432 KB
subtask1_05.txt AC 22 ms 1184 KB
subtask1_06.txt AC 23 ms 1316 KB
subtask1_07.txt AC 21 ms 932 KB
subtask1_08.txt AC 21 ms 1060 KB
subtask1_09.txt AC 22 ms 1184 KB
subtask1_10.txt AC 31 ms 1048 KB
subtask1_11.txt AC 24 ms 1188 KB
subtask1_12.txt AC 23 ms 1312 KB
subtask1_13.txt AC 24 ms 1064 KB
subtask1_14.txt AC 20 ms 1052 KB
subtask1_15.txt AC 22 ms 1308 KB
subtask1_16.txt AC 22 ms 1184 KB
subtask1_17.txt AC 23 ms 1312 KB
subtask1_18.txt AC 23 ms 1312 KB
subtask1_19.txt AC 22 ms 1100 KB
subtask1_20.txt AC 21 ms 1184 KB
subtask1_21.txt AC 22 ms 1312 KB
subtask1_22.txt AC 23 ms 1188 KB