Submission #529

#TimeUsernameProblemLanguageResultExecution timeMemory
529kriii지도 색칠하기 (GA3_map)C++98
0 / 120
8 ms18324 KiB
bool P[1<<20]; int S[2][1<<20],con[20]; long long mul[1<<20]; long long pos(int v) { int c = -1; while (v){ v /= 2; c++; } return c; } long long NumberOfMaps (int N, int M, int *A, int *B) { long long ret = 0; int i,j,u,x,s1,s2,t; for (i=0;i<M;i++){ A[i]--; B[i]--; con[A[i]] |= 1 << B[i]; con[B[i]] |= 1 << A[i]; } P[0] = 1; mul[0] = 1; for (i=1;i<(1<<N);i++){ u = i & (-i); if (!P[i-u]) continue; P[i] = 1; x = pos(u); s1 = S[0][i-u] & con[x]; s2 = S[1][i-u] & con[x]; if (s1 != 0 && s2 != 0) continue; if (s1 == 0 && s2 == 0) mul[i] = mul[i-u] * 2; else mul[i] = mul[i-u]; S[0][i] = S[0][i-u]; S[1][i] = S[1][i-u]; if (s1 == 0) S[0][i] |= u; else if (s2 == 0) S[1][i] |= u; } for (i=0;i<(1<<N);i++){ j = (1<<N)-1 -i; ret += mul[i] * mul[j]; } return ret; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...