Submission #162942
Source Code Expand
#include <string>
#include <iostream>
#include <vector>
#include <complex>
#include <queue>
#include <utility>
using namespace std;
enum{EEmpty=0,EWall,EStart,EGoal};
inline int g_c(int x,int y,int C){ return x+C*y; }
inline int g_c(complex<int> c,int C){ return c.real()+C*c.imag(); }
int main(void){
int R,C,_x,_y;
cin >> R >> C;
cin >> _y >> _x;
complex<int> st(_x-1,_y-1);
cin >> _y >> _x;
complex<int> gl(_x-1,_y-1);
vector<int> c(R*C),ans(R*C,-1);
for(int i=0;i<R;++i){
std::string line;
cin >> line;
for(int j=0;j<C;++j){
if(line[j]=='.'){ c[i*C+j] = EEmpty;}
else{ c[i*C+j] = EWall;}
}
}
c[g_c(st,C)] = EStart;
c[g_c(gl,C)] = EGoal;
queue<complex<int> > now,next;
now.push( st );
int gen = 0;
while(!now.empty()){
while(!now.empty()){
complex<int> nc = now.front(),t;
now.pop();
//now
ans[ g_c(nc,C) ] = gen;
if(nc==gl){
cout << gen << endl; return 0;
}
//next
t=nc; t-=complex<int>(0,1);
if(t.imag()>=0 && c[g_c(t,C)]!=EWall && ans[g_c(t,C)]==-1){ next.push(t);ans[g_c(t,C)]=-2; }
t=nc; t-=complex<int>(1,0);
if(t.real()>=0 && c[g_c(t,C)]!=EWall && ans[g_c(t,C)]==-1 ){ next.push(t);ans[g_c(t,C)]=-2; }
t=nc; t+=complex<int>(0,1);
if(t.imag()<R && c[g_c(t,C)]!=EWall && ans[g_c(t,C)]==-1 ){ next.push(t);ans[g_c(t,C)]=-2; }
t=nc; t+=complex<int>(1,0);
if(t.real()<C && c[g_c(t,C)]!=EWall && ans[g_c(t,C)]==-1 ){ next.push(t);ans[g_c(t,C)]=-2; }
}
swap(now,next);
++gen;
}
//string in;
//cin >> in;
//if(in.length() > 1){
// cout << in.substr(0,in.length()-1) << endl;
//}else if(in[0]!='a'){
// cout << static_cast<char>(in[0]-1) << endl;
//}else{
// cout << "-1" << endl;
//}
return 0;
}
Submission Info
Submission Time |
|
Task |
C - 幅優先探索 |
User |
destroist |
Language |
C++ (G++ 4.6.4) |
Score |
100 |
Code Size |
1776 Byte |
Status |
AC |
Exec Time |
24 ms |
Memory |
932 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
100 / 100 |
Status |
|
|
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 |
22 ms |
792 KB |
subtask0_sample02.txt |
AC |
23 ms |
920 KB |
subtask0_sample03.txt |
AC |
22 ms |
932 KB |
subtask1_01.txt |
AC |
24 ms |
916 KB |
subtask1_02.txt |
AC |
23 ms |
808 KB |
subtask1_03.txt |
AC |
23 ms |
916 KB |
subtask1_04.txt |
AC |
21 ms |
916 KB |
subtask1_05.txt |
AC |
22 ms |
840 KB |
subtask1_06.txt |
AC |
22 ms |
920 KB |
subtask1_07.txt |
AC |
20 ms |
924 KB |
subtask1_08.txt |
AC |
23 ms |
800 KB |
subtask1_09.txt |
AC |
24 ms |
920 KB |
subtask1_10.txt |
AC |
24 ms |
844 KB |
subtask1_11.txt |
AC |
23 ms |
912 KB |
subtask1_12.txt |
AC |
22 ms |
808 KB |
subtask1_13.txt |
AC |
24 ms |
920 KB |
subtask1_14.txt |
AC |
23 ms |
800 KB |
subtask1_15.txt |
AC |
22 ms |
844 KB |
subtask1_16.txt |
AC |
22 ms |
920 KB |
subtask1_17.txt |
AC |
24 ms |
796 KB |
subtask1_18.txt |
AC |
23 ms |
920 KB |
subtask1_19.txt |
AC |
24 ms |
788 KB |
subtask1_20.txt |
AC |
22 ms |
916 KB |
subtask1_21.txt |
AC |
20 ms |
916 KB |
subtask1_22.txt |
AC |
23 ms |
916 KB |