Submission #1219360

#TimeUsernameProblemLanguageResultExecution timeMemory
1219360thangdz2k7Keys (IOI21_keys)C++20
37 / 100
3094 ms20844 KiB
#include <bits/stdc++.h> using namespace std; using Vi = vector <int>; vector <int> find_reachable(Vi R, Vi U, Vi V, Vi C){ int n = R.size(), m = C.size(); vector <Vi> adj(n); for (int i = 0; i < m; ++ i){ adj[U[i]].push_back(i); adj[V[i]].push_back(i); } vector <vector <int>> con(n); vector <int> hk(n), qu, vis(n); auto add = [&](int u) -> void { if (hk[R[u]] == 0){ hk[R[u]] = 1; while (con[R[u]].size()){ int v = con[R[u]].back(); con[R[u]].pop_back(); if (!vis[v]){ vis[v] = 1; qu.push_back(v); } } } for (int id : adj[u]){ int v = U[id] ^ V[id] ^ u; int c = C[id]; if (!vis[v]){ if (hk[c]) { vis[v] = 1; qu.push_back(v); } else con[c].push_back(v); } } }; vector <int> p(n, 0); for (int r = 0; r < n; ++ r){ for (int t = 0; t < n; ++ t){ hk[t] = 0, vis[t] = 0; con[t].clear(); } vis[r] = 1; qu.push_back(r); while (qu.size()){ int u = qu.back(); qu.pop_back(); add(u); p[r] ++; } } int Min = *min_element(p.begin(), p.end()); vector <int> a(n); for (int i = 0; i < n; ++ i){ if (p[i] == Min) a[i] = 1; else a[i] = 0; } return a; }
#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...