Submission #409836

#TimeUsernameProblemLanguageResultExecution timeMemory
409836dreezy장난감 기차 (IOI17_train)C++17
0 / 100
209 ms1628 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back vector<vector<int>> graph; vector<bool> vis; vector<int> r; int chargerind; vector<int> ord; bool dfs(int n, int energy, bool charger, int order){ //cout << n << ", "<<energy << ", "<<charger<<", "<<order<<endl; if(vis[n]){ if(charger && chargerind >= ord[n]){ //cout << chargerind <<" "<<n<<" "<<ord[n]<<endl; return true; } return false; } vis[n] = true; ord[n] = order; for(int adj : graph[n]){ if(r[adj]){ energy = r.size(); chargerind = order; charger = true; } bool res = dfs(adj, energy--,charger, order+1); if( res){ return true; } } return false; } vector<int> who_wins(vector<int> a_, vector<int> r_, vector<int> u , vector<int> v){ int n = a_.size(); int m = u.size(); graph.assign(n, {}); vis.assign(n, 0); vector<int> w(n,0); r=r_; for(int i =0; i< m;i++){ graph[u[i]].pb(v[i]); //cout << u[i]<<" ->" <<v[i]<<endl; } for(int i=0; i<n;i++){ //cout << i<<": "<<endl; chargerind = -1; if(r_[i]) chargerind = 0; vis.assign(n, 0); ord.assign(n,0); w[i] = dfs(i, n , r_[i], 0); } return w; } /* int main(){ int n, m; cin >> n >>m; vector<int> a_(n), r_(n), u(m) ,v(m); for(int i = 0; i<n; i++){ cin >> a_[i]; } for(int i =0; i< n; i++) cin >> r_[i]; for(int i =0; i<m; i++) cin >> u[i]; for(int i =0; i<m;i++) cin >> v[i]; vector<int> w_ = who_wins(a_,r_,u,v); for(int i=0; i< n ;i++) cout << w_[i]<<endl; } */
#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...