이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "coprobber.h"
#include <bits/stdc++.h>
using namespace std;
bool mat[MAX_N + 5][MAX_N + 5];
bool visit[MAX_N + 5][MAX_N + 5][2];
bool memo[MAX_N + 5][MAX_N + 5][2];
int n;
bool dp(int o, int r, int f) {
if (o == r)
return true;
if (visit[o][r][f])
return memo[o][r][f];
visit[o][r][f] = true;
if (f == 0) {
bool win = false;
for (int i = 0; i < n; i++)
if (i == o || mat[o][i])
win |= dp(i, r, f ^ 1);
memo[o][r][f] = win;
} else {
bool win = true;
for (int i = 0; i < n; i++)
if (mat[r][i])
win &= dp(o, i, f ^ 1);
memo[o][r][f] = win;
}
return memo[o][r][f];
}
int start(int N, bool A[MAX_N][MAX_N]) {
n = N;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
mat[i][j] = A[i][j];
memset(visit, false, sizeof visit);
memset(memo, false, sizeof memo);
int pos = -1;
for (int i = 0; i < n; i++) {
bool win = true;
for (int j = 0; j < n; j++)
win &= dp(i, j, 0);
if (win) pos = i;
}
return pos;
}
int nextMove(int R) {
return -1;
}
# | 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... |