Submission #1198637

#TimeUsernameProblemLanguageResultExecution timeMemory
1198637dosts장난감 기차 (IOI17_train)C++20
0 / 100
7 ms1608 KiB
#include "train.h" #include <bits/stdc++.h> #define int long long #define pii pair<int,int> #define vi vector<int> #define ff first #define ss second #define sp << " " << #define all(x) x.begin(),x.end() using namespace std; vi ans,go,chk; vector<vi> edges,egdes; void dfs(int node) { if (ans[node]) return; ans[node] = 1; for (auto it : egdes[node]) { dfs(it); } } int fl; void dfs2(int node) { if (go[node]) return; go[node] = 1; for (auto it : edges[node]) { dfs2(it); } } void check(int node,int root) { if (chk[node]) return; chk[node] = 1; for (auto it : edges[node]) { if (it == root){ fl = 1; check(it,root); } } } std::vector<int32_t> who_wins(std::vector<int32_t> a, std::vector<int32_t> r, std::vector<int32_t> u, std::vector<int32_t> v) { int n = a.size(); std::vector<int32_t> res(n); ans.assign(n,0); go.assign(n,0); edges.resize(n); egdes.resize(n); int m = u.size(); for (int i = 0;i<m;i++) { edges[u[i]].push_back(v[i]); egdes[v[i]].push_back(u[i]); } if (*min_element(all(a)) == 1) { //hepsi benim for (int i = 0;i<n;i++) { if (r[i]) { chk.assign(n,0); fl = 0; check(i,i); if (!fl) continue; dfs(i),dfs2(i); } } for (int i = 0;i<n;i++) res[i] = ans[i]&&go[i]; } else if (*max_element(all(a)) == 0) { //hepsi onun } return res; }
#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...