제출 #290917

#제출 시각아이디문제언어결과실행 시간메모리
290917KastandaToy Train (IOI17_train)C++11
11 / 100
1379 ms1656 KiB
// M #include<bits/stdc++.h> #include "train.h" using namespace std; const int N = 5005; int n, m, A[N], R[N], Z[N], F[N], D[N]; vector < int > in[N], out[N]; vector < int > who_wins(vector < int > _A, vector < int > _R, vector < int > _U, vector < int > _V) { n = (int)_A.size(); m = (int)_U.size(); for (int i = 0; i < n; i ++) A[i] = _A[i]; for (int i = 0; i < n; i ++) R[i] = _R[i]; for (int i = 0; i < m; i ++) { out[_U[i]].push_back(_V[i]); in[_V[i]].push_back(_U[i]); } for (int __ = 0; __ < n; __ ++) { queue < int > qu; memset(D, 0, sizeof(D)); memset(Z, 0, sizeof(Z)); for (int i = 0; i < n; i ++) if ((__ == 0 && R[i]) || (__ > 0 && !F[i])) Z[i] = 1, qu.push(i); while (qu.size()) { int v = qu.front(); qu.pop(); for (int u : in[v]) if (!Z[u]) { if (A[u]) Z[u] = 1, qu.push(u); else { D[u] ++; if (D[u] == (int)out[u].size()) Z[u] = 1, qu.push(u); } } } memset(D, 0, sizeof(D)); for (int i = 0; i < n; i ++) if (!Z[i]) F[i] = 1, qu.push(i); while (qu.size()) { int v = qu.front(); qu.pop(); for (int u : in[v]) if (!F[u]) { if (!A[u]) F[u] = 1, qu.push(u); else { D[u] ++; if (D[u] == (int)out[u].size()) F[u] = 1, qu.push(u); } } } } vector < int > Rs; for (int i = 0; i < n; i ++) Rs.push_back(F[i] == 0); return Rs; }
#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...