Submission #250183

#TimeUsernameProblemLanguageResultExecution timeMemory
250183Kevin_Zhang_TW경찰관과 강도 (BOI14_coprobber)C++17
0 / 100
1 ms640 KiB
#include "coprobber.h" #include <bits/stdc++.h> using namespace std; #define pb emplace_back #define MAX_N 500 #define tm asdfasdfoi const int inf = 1e9; // modify the following functions // you can define global variables and functions int now, n; vector<int> edge[MAX_N]; int F[MAX_N][MAX_N]; int con[MAX_N][MAX_N], win[MAX_N][MAX_N], lose[MAX_N][MAX_N]; int tm[MAX_N][MAX_N]; int lst, CT; bool check(int a, int b) { if (a == b) return true; for (int u : edge[b]) { if (!con[a][u]) return false; } ++CT; return true; } int dfs(int i, int j) { if (~win[i][j]) return win[i][j]; win[i][j] = false; for (int u : edge[j]) { bool die = false; for (int k : edge[i]) if (dfs(k, u)) die = true; die |= dfs(i, u); if (!die) return false; } tm[i][j] = ++CT; return win[i][j] = 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][i] = true; } for (int i = 0;i < n;++i) for (int j = 0;j < n;++j) { if (win[i][j] = check(i, j)) tm[i][j] = ++CT; else win[i][j] = -1; } for (int i = 0;i < n;++i) for (int j = 0;j < n;++j) if (win[i][j] == -1) dfs(i, j); 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) { assert(i == 0); return now = i; } } return -1; } int nextMove(int R) { if (now == R || con[now][R]) return R; for (int u : edge[now]) if (win[u][R] && tm[u][R] < lst) return lst = tm[u][R], now = u; lst = tm[now][R]; return now; }

Compilation message (stderr)

coprobber.cpp: In function 'int start(int, bool (*)[500])':
coprobber.cpp:47:18: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
    if (win[i][j] = check(i, j))
        ~~~~~~~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...