# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
148865 | 본인 하지만 안 어림 ㅋㅋ (#200) | Bulb Game (FXCUP4_bulb) | C++17 | 109 ms | 23848 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "bulb.h"
using namespace std;
int d[300003], D[300003];
int c[300003];
int b[300003];
void dfs1(int x, vector<int> &L) {
d[x] = L[x];
D[x] = 1;
if (d[x] >= 0) {
dfs1(d[x], L);
D[x] += D[d[x]];
d[x] = d[d[x]];
}
}
void dfs2(int x, vector<int> &L, vector<int> &R) {
if (L[x] >= 0) dfs2(L[x], L, R);
if (R[x] >= 0) dfs2(R[x], L, R);
c[x] = R[x] == -2 || d[R[x]] == -2 || (L[x] >= 0 && c[L[x]] == -2) ? -2 : -1;
b[x] = R[x] == -1 || d[R[x]] == -1 || (L[x] >= 0 && b[L[x]] == -1) ? -1 : -2;
}
int FindWinner(int T, std::vector<int> L, std::vector<int> R){
int i, j, k, t, N = L.size();
for (i = 0; i < N; i++) if (!d[i]) dfs1(i, L);
if (d[0] == -2) return 0;
dfs2(0, L, R);
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |