이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "coprobber.h"
#include "bits/stdc++.h"
#ifndef EVAL
#include "grader.cpp"
#endif
using namespace std;
const int MAXN = 500;
int n, m, x, y, tin[MAXN], tout[MAXN], t;
int a[MAXN][MAXN], par[MAXN], cur;
void dfs(int u, int p = -1){
par[u] = p, tin[u] = t++;
for(int i=0;i<n;i++){
if(a[u][i] && i != p) dfs(i, u);
} tout[u] = t - 1;
}
int start(int N, bool A[MAX_N][MAX_N]){
//~ n = N;
//~ for(int i=1;i<N;i++){
//~ int cnt = 0;
//~ for(int j=0;j<N;j++) cnt += A[i][j];
//~ if(cnt == 2) { m = i+1; break; }
//~ }
for(int i=0;i<n;i++){
for(int j=0;j<n;j++) a[i][j] = A[i][j];
}
return 0;
}
int nextMove(int r){
if(~par[cur]) {
if(tin[cur] <= tin[r] && tout[r] <= tout[cur]){
for(int i=0;i<n;i++){
if(a[cur][i] && par[cur] != i){
if(tin[i] <= tin[r] && tout[r] <= tout[i]){
cur = i; return i;
}
}
}
} else cur = par[cur]; return par[cur];
}
else {
for(int i=0;i<n;i++){
if(a[cur][i] && par[cur] != i){
if(tin[i] <= tin[r] && tout[r] <= tout[i]){
cur = i;
return i;
}
}
}
}
//~ int tx = r / m, ty = r % m;
//~ int xd = abs(tx - x), yd = abs(ty - y);
//~ if(xd > yd){
//~ if(tx > x) x++;
//~ else x--;
//~ } if(xd < yd){
//~ if(ty > y) y++;
//~ else y--;
//~ } return x * m + y;
}
/*
9
0 1 0 1 0 0 0 0 0
1 0 1 0 1 0 0 0 0
0 1 0 0 0 1 0 0 0
1 0 0 0 1 0 1 0 0
0 1 0 1 0 1 0 1 0
0 0 1 0 1 0 0 0 1
0 0 0 1 0 0 0 1 0
0 0 0 0 1 0 1 0 1
0 0 0 0 0 1 0 1 0
*/
컴파일 시 표준 에러 (stderr) 메시지
coprobber.cpp: In function 'int nextMove(int)':
coprobber.cpp:67:1: warning: control reaches end of non-void function [-Wreturn-type]
67 | }
| ^
# | 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... |