제출 #805606

#제출 시각아이디문제언어결과실행 시간메모리
805606raysh07열쇠 (IOI21_keys)C++17
0 / 100
7 ms14420 KiB
#include <bits/stdc++.h> using namespace std; #define INF (int)1e9 int n, m; const int N = 3e5 + 69; vector <int> adj[N], pend[N]; bool have[N], vis[N]; //do i have this colour? int cnt[N], a[N], b[N]; vector<int> find_reachable(vector<int> r, vector<int> u, vector<int> v, vector<int> c) { n = r.size(); m = u.size(); for (int i = 0; i < m; i++){ adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } for (int i = 0; i < n; i++){ a[i] = r[i]; b[i] = c[i]; } int mn = INF; for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++){ have[j] = false; pend[j].clear(); } queue <int> q; q.push(i); while (!q.empty()){ cnt[i]++; int u = q.front(); q.pop(); have[r[u]] = true; for (auto x : pend[r[u]]){ vis[x] = true; q.push(x); } pend[r[u]].clear(); for (int v : adj[u]){ if (vis[v]) continue; if (have[c[v]]){ vis[v] = true; q.push(v); } else { pend[c[v]].push_back(v); } } } mn = min(mn, cnt[i]); } vector <int> ans; for (int i = 0; i < n; i++){ if (mn == cnt[i]) ans.push_back(i); } 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...