이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
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 time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |