Submission #1215443

#TimeUsernameProblemLanguageResultExecution timeMemory
1215443thelegendary08Keys (IOI21_keys)C++17
0 / 100
0 ms324 KiB
#include "keys.h" #include<bits/stdc++.h> #define vi vector<int> #define f0r(i,n) for(int i = 0; i<n; i++) #define mp make_pair #define pb push_back #define FOR(i, k, n) for(int i = k; i<n; i++) #define pii pair<int,int> #define dout(x) cout<<x<<' '<<#x<<'\n'; #define vout(x) for(auto u : x)cout<<u<<' '; cout<<'\n'; #define vvi vector<vi> #define vb vector<bool> using namespace std; std::vector<int> find_reachable(std::vector<int> r, std::vector<int> u, std::vector<int> v, std::vector<int> c) { int n = r.size(); int m = u.size(); vi ans(n); vvi adj(n); f0r(i,m){ adj[u[i]].pb(v[i]); adj[v[i]].pb(u[i]); } long long sum = accumulate(ans.begin(), ans.end(), 0LL); vi ccsize; vvi ccs; vi cc(n); int cur = 0; vb vis(n); f0r(i,n){ if(!vis[i]){ int sz = 1; vis[i] = 1; cc[i] = cur; vi curcc; curcc.pb(i); queue<int>q; q.push(i); while(!q.empty()){ int node = q.front(); q.pop(); for(auto u : adj[node]){ if(vis[u])continue; vis[u] = 1; curcc.pb(u); cc[u] = cur; q.push(u); sz++; } } ccsize.pb(sz); ccs.pb(curcc); cur++; } } if(sum == 0){ int mn = *min_element(ccsize.begin(), ccsize.end()); f0r(i,n){ if(ccsize[cc[i]] == mn)ans[i] = 1; } return ans; } else{ f0r(i,n)if(r[i] != 0 || ccsize[cc[i]] == 1)ans[i] = 1; return ans; } 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...