Submission #358671
Source Code Expand
#include<iostream>
#include<fstream>
#include<string>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<stack>
#include<queue>
#include<set>
#include<map>
#include<vector>
#include<list>
#include<algorithm>
#include<utility>
#include<complex>
using namespace std;
#define reE(i,a,b) for(auto (i)=(a);(i)<=(b);(i)++)
#define rE(i,b) reE(i,0,b)
#define reT(i,a,b) for(auto (i)=(a);(i)<(b);(i)++)
#define rT(i,b) reT(i,0,b)
#define rep(i,a,b) reE(i,a,b);
#define rev(i,a,b) for(auto (i)=(b)-1;(i)>=(a);(i)--)
#define itr(i,b) for(auto (i)=(b).begin();(i)!=(b).end();++(i))
#define LL long long
typedef complex<double> dc;
const LL INF = 1 << 30;
const double eps = 1e-8;
int H, W;
int dir[4][2] = { { 0, 1 }, { 1, 0 }, { -1, 0 }, { 0, -1 } };
void bfs(map<vector<int>, int> &used, int s, vector<int> c){
int d = 0,h,w,new_h,new_w,new_s;
queue<pair<vector<int>, int>> q;
q.push(make_pair(c, s));
used[c] = d;
while (q.empty() == false){
c = q.front().first;
s = q.front().second;
d = used[c];
q.pop();
h = s / W; w = s%W;
if (d < 12){
rT(i, 4){
new_h = h + dir[i][0];
new_w = w + dir[i][1];
new_s = new_h*W + new_w;
if (0 <= new_h&&new_h < H && 0 <= new_w&&new_w < W){
swap(c[s], c[new_s]);
if (used.count(c) == 0){
used[c] = d + 1;
q.push(make_pair(c, new_s));
}
swap(c[s], c[new_s]);
}
}
}
}
}
void print(vector<int> x){
rT(i, H){
rT(j, W)printf("%2d ", x[i*W + j]);
cout << endl;
}
}
int main(void){
map<vector<int>, int>st;
map<vector<int>, int>ed;
vector<int> is, ans;
int start,res=24;
cin >> H >> W;
is.resize(H*W);
ans.resize(H*W);
rT(i, H*W){ cin >> is[i]; if (!is[i])start = i; ans[i] = (i + 1) % (H*W); }
bfs(st, start, is);
bfs(ed, H*W - 1, ans);
itr(i, st){
// print(i->first);
if (ed.count(i->first)){
res = min(res, i->second + ed[i->first]);
}
}
cout << res << endl;
return(0);
}
Submission Info
Submission Time |
|
Task |
D - パズル |
User |
btk15049 |
Language |
C++11 (GCC 4.8.1) |
Score |
100 |
Code Size |
2028 Byte |
Status |
AC |
Exec Time |
1351 ms |
Memory |
64112 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
100 / 100 |
Status |
|
|
Set Name |
Test Cases |
Sample |
subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt, subtask0_sample_04.txt, subtask0_sample_05.txt |
All |
subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt, subtask0_sample_04.txt, subtask0_sample_05.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, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt, subtask1_30.txt |
Case Name |
Status |
Exec Time |
Memory |
subtask0_sample_01.txt |
AC |
40 ms |
1392 KB |
subtask0_sample_02.txt |
AC |
90 ms |
5536 KB |
subtask0_sample_03.txt |
AC |
27 ms |
856 KB |
subtask0_sample_04.txt |
AC |
116 ms |
6696 KB |
subtask0_sample_05.txt |
AC |
1237 ms |
64104 KB |
subtask1_01.txt |
AC |
26 ms |
1048 KB |
subtask1_02.txt |
AC |
25 ms |
1044 KB |
subtask1_03.txt |
AC |
27 ms |
936 KB |
subtask1_04.txt |
AC |
25 ms |
932 KB |
subtask1_05.txt |
AC |
34 ms |
1452 KB |
subtask1_06.txt |
AC |
31 ms |
1448 KB |
subtask1_07.txt |
AC |
53 ms |
2856 KB |
subtask1_08.txt |
AC |
501 ms |
27684 KB |
subtask1_09.txt |
AC |
543 ms |
30512 KB |
subtask1_10.txt |
AC |
493 ms |
27692 KB |
subtask1_11.txt |
AC |
493 ms |
27688 KB |
subtask1_12.txt |
AC |
1058 ms |
58796 KB |
subtask1_13.txt |
AC |
1287 ms |
64112 KB |
subtask1_14.txt |
AC |
1020 ms |
52236 KB |
subtask1_15.txt |
AC |
849 ms |
48556 KB |
subtask1_16.txt |
AC |
1166 ms |
64104 KB |
subtask1_17.txt |
AC |
916 ms |
52392 KB |
subtask1_18.txt |
AC |
714 ms |
39852 KB |
subtask1_19.txt |
AC |
531 ms |
33064 KB |
subtask1_20.txt |
AC |
817 ms |
43312 KB |
subtask1_21.txt |
AC |
831 ms |
48560 KB |
subtask1_22.txt |
AC |
914 ms |
48548 KB |
subtask1_23.txt |
AC |
1224 ms |
58788 KB |
subtask1_24.txt |
AC |
1209 ms |
58728 KB |
subtask1_25.txt |
AC |
1033 ms |
52392 KB |
subtask1_26.txt |
AC |
1165 ms |
64104 KB |
subtask1_27.txt |
AC |
936 ms |
52304 KB |
subtask1_28.txt |
AC |
1351 ms |
64048 KB |
subtask1_29.txt |
AC |
753 ms |
41380 KB |
subtask1_30.txt |
AC |
1035 ms |
52388 KB |