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
AC × 5
AC × 35
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