이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "coprobber.h"
#include <bits/stdc++.h>
using namespace std;
#define pb emplace_back
#define MAX_N 500
const int inf = 1e9;
// modify the following functions
// you can define global variables and functions
int dp[MAX_N][MAX_N];
int now, n;
vector<int> edge[MAX_N];
bool con[MAX_N][MAX_N], win[MAX_N][MAX_N];
bool check(int a, int b) {
if (a == b) return true;
//cerr <<" A B " << a << ' ' << b << '\n';
for (int u : edge[b]) {
if (!con[a][u]) return false;
//cerr << "CON " << a << ' ' << u << '\n';
}
return true;
}
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) {
if (A[i][j])
con[i][j] = true, edge[i].pb(j);//, con[i][j] = A[i][j], con[i][i] = true;
}
con[i][i] = true;
}
for (int i = 0;i < n;++i)
for (int j = 0;j < n;++j) {
win[i][j] = check(i, j);
//cerr << "win " << i << ' ' << j << " : " <<(win[i][j] ?"WIN ": "LOSE") << '\n';
}
//exit(0);
bool ch = true;
while (ch) {
ch = false;
for (int i = 0;i < n;++i)
for (int j = 0;j < n;++j) if (!win[i][j]) {
bool esc = false;
for (int u : edge[j]) {
bool die = false;
for (int k : edge[i]) {
if (win[k][u]) {
die = true;
break;
}
}
die |= win[i][u];
if (!die) esc = true;
if (esc) break;
}
if (!esc) win[i][j] = true, ch = true;
}
}
// for (int i = 0;i < n;++i)
// for (int j = 0;j < n;++j)
// printf("win[%d][%d] : %d\n", i, j, (int)win[i][j]);
// exit(0);
for (int i = 0;i < n;++i) {
bool allwin = true;
for (int j = 0;j < n;++j)
if (!win[i][j]) {
allwin = false;
break;
}
if (allwin)
return now = i;
}
return -1;
}
int nextMove(int R) {
if (now == R) return now;
for (int u : edge[now])
if (win[u][R])
return now = u;
return now;
}
# | 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... |