Submission #1076878

#TimeUsernameProblemLanguageResultExecution timeMemory
1076878GrayToy Train (IOI17_train)C++17
5 / 100
5 ms2652 KiB
#include "train.h" #include <bits/stdc++.h> using namespace std; #define ll int #define ff first #define ss second #define ln "\n" #define ld long double vector<ll> are; vector<ll> isc; vector<vector<ll>> A; ll n, m; void dfs(ll u, vector<ll> &dp){ dp[u]=-2; bool spec=0; for (auto v:A[u]){ if (v==u) spec=1; if (dp[v]==-1) {dfs(v, dp); dp[u]=dp[v];} } if (spec){ if (isc[u] and (are[u] or A[u].size()==1)){ dp[u]=1; }else{ if (!isc[u] and !are[u]) dp[u]=0; else if (dp[u]==-2) dp[u]=0; } } // if (dp[u]==-2) dp[u]=0; } vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v) { n=a.size(); m=v.size(); isc=r; are=a; A.clear(); A.resize(n); for (ll i=0; i<m; i++){ A[u[i]].push_back(v[i]); } vector<int> dp(n, -1); for (ll i=0; i<n; i++){ if (dp[i]==-1) dfs(i, dp); assert(dp[i]!=-2); } return dp; }
#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...