Submission #15974

#TimeUsernameProblemLanguageResultExecution timeMemory
15974gs14004경찰관과 강도 (BOI14_coprobber)C++14
0 / 100
2 ms384 KiB
#include "coprobber.h" #include <cstdio> #include <queue> #include <cstring> using namespace std; int indeg[MAX_N][MAX_N][2]; queue<int> qx, qy, qd; bool vis[500][500][2]; int nxt[500][500]; int pos; int start(int N, bool A[MAX_N][MAX_N]) { for (int i = 0; i < N; i++){ for (int j = 0; j < N; j++){ if (i == j){ continue; } for (int k = 0; k < N; k++){ if (A[i][k]){ indeg[i][j][0] = 1; } if (A[k][j]){ indeg[i][j][1]++; } } } } for (int i = 0; i < N; i++){ for (int j = 0; j < N; j++){ for (int k = 0; k < 2; k++){ if (indeg[i][j][k] == 0){ qx.push(i), qy.push(j), qd.push(k); vis[i][j][k] = 1; } } } } while (!qx.empty()){ int xf = qx.front(); int yf = qy.front(); int df = qd.front(); qx.pop(), qy.pop(), qd.pop(); if (df == 1){ for (int i = 0; i < N; i++){ if (!vis[i][yf][0]){ indeg[i][yf][0]--; if (indeg[i][yf][0] == 0){ qx.push(i); qy.push(yf); qd.push(0); vis[i][yf][0] = 1; nxt[xf][yf] = i; } } } } else{ for (int i = 0; i < N; i++){ if (!vis[xf][i][1]){ indeg[xf][i][1]--; if (indeg[xf][i][1] == 0){ qx.push(xf); qy.push(i); qd.push(1); vis[xf][i][1] = 1; } } } } } for (int i = 0; i < N; i++){ int fnd = 0; for (int j = 0; j < N; j++){ if (!vis[i][j][0]){ fnd = 1; break; } } if (!fnd) return pos = i; } return -1; } int nextMove(int R) { return pos = nxt[pos][R]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...