Submission #1131182


Source Code Expand

#include<queue>
#include<stdio.h>
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<string.h>
using namespace std;

typedef long long LL;
typedef vector<int> VI;

#define REP(i,n) for(int i=0, i##_len=(n); i<i##_len; ++i)
#define EACH(i,c) for(__typeof((c).begin()) i=(c).begin(),i##_end=(c).end();i!=i##_end;++i)
#define eprintf(...) fprintf(stderr, __VA_ARGS__)

template<class T> inline void amin(T &x, const T &y) { if (y<x) x=y; }
template<class T> inline void amax(T &x, const T &y) { if (x<y) x=y; }
template<class Iter> void rprintf(const char *fmt, Iter begin, Iter end) {
    for (bool sp=0; begin!=end; ++begin) { if (sp) putchar(' '); else sp = true; printf(fmt, *begin); }
    putchar('\n');
}

int N;
char F[511][511];
int D[1<<9];

int main() {
    scanf("%d", &N);
    REP (i, N) scanf("%s", F[i]);

    memset(D, 0x3f, sizeof D);
    const int INF = D[0];
    int s = 0, c = 0;
    REP (i, N) REP (j, N) {
	if (F[i][j] == '#') s |= 1<<c;
	c++;
    }

    D[s] = 0;
    queue<int> qu; qu.push(s);
    while (!qu.empty()) {
	int v = qu.front(); qu.pop();
	REP (i, N) REP (j, N) {
	    int w = v;
	    REP (k, N) {
		bool b = v & (1 << (k + i*N));
		if (b) w |= 1 << (j + k*N);
		else w &= ~(1 << (j + k*N));
	    }

	    if (D[w] > D[v] + 1) {
		D[w] = D[v] + 1;
		qu.push(w);
	    }
	}
    }

    int m = N * N;
    int ans = D[(1<<m)-1];
    if (ans == INF) ans = -1;
    printf("%d\n", ans);

    return 0;
}

Submission Info

Submission Time
Task B - Row to Column
User natsugiri
Language C++14 (GCC 5.4.1)
Score 300
Code Size 1526 Byte
Status RE
Exec Time 201 ms
Memory 512 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:29:20: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &N);
                    ^
./Main.cpp:30:33: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     REP (i, N) scanf("%s", F[i]);
                                 ^

Judge Result

Set Name Sample Subtask All
Score / Max Score 0 / 0 300 / 300 0 / 1000
Status
AC × 5
AC × 20
AC × 21
WA × 14
RE × 8
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 1 ms 256 KB
0_04.txt AC 1 ms 256 KB
1_00.txt AC 1 ms 256 KB
1_01.txt AC 1 ms 256 KB
1_02.txt AC 1 ms 256 KB
1_03.txt AC 1 ms 256 KB
1_04.txt AC 1 ms 256 KB
1_05.txt AC 1 ms 256 KB
1_06.txt AC 1 ms 256 KB
1_07.txt AC 1 ms 256 KB
1_08.txt AC 1 ms 256 KB
1_09.txt AC 1 ms 256 KB
1_10.txt AC 1 ms 256 KB
1_11.txt AC 1 ms 256 KB
1_12.txt AC 1 ms 256 KB
1_13.txt AC 1 ms 256 KB
1_14.txt AC 1 ms 256 KB
2_00.txt WA 134 ms 512 KB
2_01.txt AC 126 ms 512 KB
2_02.txt RE 103 ms 512 KB
2_03.txt RE 98 ms 512 KB
2_04.txt RE 101 ms 512 KB
2_05.txt RE 97 ms 512 KB
2_06.txt RE 101 ms 512 KB
2_07.txt WA 75 ms 512 KB
2_08.txt WA 121 ms 512 KB
2_09.txt WA 114 ms 512 KB
2_10.txt WA 114 ms 512 KB
2_11.txt WA 122 ms 512 KB
2_12.txt WA 115 ms 512 KB
2_13.txt WA 96 ms 512 KB
2_14.txt RE 201 ms 512 KB
2_15.txt WA 93 ms 512 KB
2_16.txt RE 197 ms 512 KB
2_17.txt RE 181 ms 512 KB
2_18.txt WA 66 ms 512 KB
2_19.txt WA 115 ms 512 KB
2_20.txt WA 68 ms 512 KB
2_21.txt WA 60 ms 384 KB
2_22.txt WA 122 ms 512 KB