제출 #838433

#제출 시각아이디문제언어결과실행 시간메모리
838433thimote75장난감 기차 (IOI17_train)C++14
0 / 100
1160 ms1636 KiB
#include "train.h" #include <bits/stdc++.h> using namespace std; using idata = vector<int>; using bdata = vector<bool>; using igrid = vector<idata>; idata controller, charger; int N, M; igrid roads; idata visited; int stage = 1; bdata status; bool isBCycle (int node, int source, int depth) { if (depth != 0 && node == source) return true; if (charger[node] == 1) return false; if (visited[node] == stage) return status[node]; visited[node] = stage; status [node] = true; bool rstatus = controller[node] == 1; for (int next : roads[node]) { bool result = isBCycle(next, source, depth + 1); if (controller[node] == 1) rstatus &= result; else rstatus |= result; } status[node] = rstatus; return rstatus; } idata who_wins(idata _controller, idata _charger, idata u, idata v) { N = _controller.size(); M = u.size(); controller = _controller; charger = _charger; roads.resize(N); for (int i = 0; i < M; i ++) roads[u[i]].push_back(v[i]); visited.resize(N); status .resize(N); idata answer(N, false); for (int i = 0; i < N; i ++) { answer[i] = isBCycle(i, i, 0) ? 0 : 1; stage ++; } return answer; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...