제출 #1218787

#제출 시각아이디문제언어결과실행 시간메모리
1218787marizaToy Train (IOI17_train)C++20
0 / 100
1164 ms1452 KiB
#include "train.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; const ll N=5000; vector<ll> g[N]; bool o[N]; bool x[N]; bool vis[N]={}; bool dfs(ll curr){ // cout<<curr<<endl; if(vis[curr]) return x[curr]; vis[curr]=1; bool ans; if(o[curr]==1){ ans=0; for(auto nxt:g[curr]){ ans|=dfs(nxt); } } else{ ans=1; for(auto nxt:g[curr]){ ans&=dfs(nxt); } } return x[curr]=ans; } vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v) { ll n=a.size(), m=u.size(); for(ll i=0; i<n; i++){ o[i]=a[i]; } for(ll i=0; i<m; i++){ g[u[i]].push_back(v[i]); } vector<int> ans(n,0); for(ll i=0; i<n; i++){ // cout<<"---"<<i<<"---"<<endl; if(!r[i]) continue; for(ll j=0; j<n; j++){ x[j]=0; vis[j]=0; } x[i]=1; dfs(i); for(ll j=0; j<n; j++){ vis[j]=0; } vis[i]=1; for(ll j=0; j<n; j++){ if(!vis[j]) dfs(j); } for(ll j=0; j<n; j++){ ans[j]|=x[j]; // cout<<x[j]<<" "; } // cout<<endl; } return ans; }
#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...