Submission #1131280


Source Code Expand

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <climits>
#include <cfloat>
#include <cstring>
#include <map>
#include <utility>
#include <set>
#include <iostream>
#include <memory>
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
#include <sstream>
#include <complex>
#include <stack>
#include <queue>
#include <unordered_set>
#include <unordered_map>
using namespace std;


struct edge
{
	int to;
	long long cost;
	edge(int to_, long long cost_) :
		to(to_), cost(cost_) {}
};
const long long INF = 123456789012345;
using P = pair<long long, int>;//first:cost,second:vertice
void dijkstra(vector<edge>graph_[], long long dist[], int n_, int s_)
{
	priority_queue<P, vector<P>, greater<P>>que;
	que.push({ 0,s_ });
	fill(dist, dist + n_, INF);
	dist[s_] = 0ll;
	while (!que.empty())
	{
		auto q = que.top();
		que.pop();
		long long thd = q.first;
		int thv = q.second;
		if (thd > dist[thv])
		{
			continue;
		}
		for (auto ed : graph_[thv])
		{
			if (dist[ed.to] > ed.cost + thd)
			{
				dist[ed.to] = ed.cost + thd;
				que.push({ dist[ed.to],ed.to });
			}
		}
	}
}

vector<edge>graph[512];
long long dist[512];

int main(void)
{
	int n;
	cin >> n;
	int ss = 512;
	if (n == 2)ss = 16;
	int ms = n * n;
	for (int board = 0; board < ss; ++board)
	{
		bool s[9] = {};
		for (int i = 0; i < ms; ++i)
		{
			if (board & (1 << i))s[i] = true;
		}
		for (int m = 0; m < ms; ++m)
		{
			bool t[9];
			for (int i = 0; i < ms; ++i)t[i] = s[i];
			int p = m / n;
			int q = m % n;
			int kio[3];
			for (int i = 0; i < n; ++i)kio[i] = s[p * n + i];
			for (int i = 0; i < n; ++i)t[i * n + q] = kio[i];
			int to = 0;
			for (int i = 0; i < ms; ++i)
			{
				to += t[i] ? (1 << i) : 0;
			}
			graph[to].emplace_back(board, 1);
		}
	}
	int id = 0;
	int inp[9];
	for (int i = 0; i < ms; ++i)
	{
		char ch;
		cin >> ch;
		inp[i] = (ch == '.');
	}
	for (int i = 0; i < ms; ++i)
	{
		id += inp[i] ? (1 << i) : 0;
	}
	dijkstra(graph, dist, ss, 0);
	cout << ((dist[id] == INF) ? -1 : dist[id]) << endl;
	return 0;
}

Submission Info

Submission Time
Task B - Row to Column
User platypus
Language C++14 (GCC 5.4.1)
Score 300
Code Size 2163 Byte
Status RE
Exec Time 273 ms
Memory 384 KB

Judge Result

Set Name Sample Subtask All
Score / Max Score 0 / 0 300 / 300 0 / 1000
Status
AC × 5
AC × 20
AC × 20
RE × 23
Set Name Test Cases
Sample 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 0_04.txt
Subtask 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 0_04.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt
All 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 0_04.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 2_00.txt, 2_01.txt, 2_02.txt, 2_03.txt, 2_04.txt, 2_05.txt, 2_06.txt, 2_07.txt, 2_08.txt, 2_09.txt, 2_10.txt, 2_11.txt, 2_12.txt, 2_13.txt, 2_14.txt, 2_15.txt, 2_16.txt, 2_17.txt, 2_18.txt, 2_19.txt, 2_20.txt, 2_21.txt, 2_22.txt
Case Name Status Exec Time Memory
0_00.txt AC 1 ms 256 KB
0_01.txt AC 1 ms 256 KB
0_02.txt AC 1 ms 256 KB
0_03.txt AC 2 ms 384 KB
0_04.txt AC 1 ms 384 KB
1_00.txt AC 2 ms 384 KB
1_01.txt AC 2 ms 384 KB
1_02.txt AC 1 ms 384 KB
1_03.txt AC 2 ms 384 KB
1_04.txt AC 2 ms 384 KB
1_05.txt AC 2 ms 384 KB
1_06.txt AC 2 ms 384 KB
1_07.txt AC 2 ms 384 KB
1_08.txt AC 2 ms 384 KB
1_09.txt AC 2 ms 384 KB
1_10.txt AC 1 ms 384 KB
1_11.txt AC 2 ms 384 KB
1_12.txt AC 2 ms 384 KB
1_13.txt AC 2 ms 384 KB
1_14.txt AC 2 ms 384 KB
2_00.txt RE 273 ms 256 KB
2_01.txt RE 96 ms 256 KB
2_02.txt RE 95 ms 256 KB
2_03.txt RE 95 ms 256 KB
2_04.txt RE 96 ms 256 KB
2_05.txt RE 95 ms 256 KB
2_06.txt RE 96 ms 256 KB
2_07.txt RE 95 ms 256 KB
2_08.txt RE 95 ms 256 KB
2_09.txt RE 96 ms 256 KB
2_10.txt RE 96 ms 256 KB
2_11.txt RE 95 ms 256 KB
2_12.txt RE 95 ms 256 KB
2_13.txt RE 95 ms 256 KB
2_14.txt RE 94 ms 256 KB
2_15.txt RE 95 ms 256 KB
2_16.txt RE 95 ms 256 KB
2_17.txt RE 95 ms 256 KB
2_18.txt RE 95 ms 256 KB
2_19.txt RE 95 ms 256 KB
2_20.txt RE 95 ms 256 KB
2_21.txt RE 98 ms 256 KB
2_22.txt RE 95 ms 256 KB