제출 #1245099

#제출 시각아이디문제언어결과실행 시간메모리
1245099nicolo_010Keys (IOI21_keys)C++20
37 / 100
3092 ms24204 KiB
#include <bits/stdc++.h> #include "keys.h" using namespace std; using ll = long long; #define rep(i, k, n) for (int i=k;i<n;i++) struct DSU { vector<int> rank, parent; vector<int> contain; DSU(int n, int i) { rank.assign(n, 1); parent.resize(n); contain.assign(n, 0); contain[i] = 1; rep(i, 0, n) parent[i] = i; } int find(int n) { return (parent[n] == n ? n : parent[n] = find(parent[n])); } bool unite(int n1, int n2) { int p1 = find(n1), p2 = find(n2); if (p1 == p2) return false; if (rank[p1] > rank[p2]) { rank[p1] += rank[p2]; parent[p2] = p1; contain[p1] |= contain[p2]; } else { rank[p2] += rank[p1]; parent[p1] = p2; contain[p2] |= contain[p1]; } return true; } }; vector<int> find_reachable(vector<int> r, vector<int> u, vector<int> v, vector<int> c) { int n = r.size(); int m = v.size(); vector<int> ans(n); vector<int> sz(n, 1); vector<vector<pair<int, int>>> adj(n); rep(i, 0, m) { int a = u[i], b = v[i]; adj[a].push_back({b, c[i]}); adj[b].push_back({a, c[i]}); } rep(i, 0, n) { vector<int> visc(n, 0); vector<bool> vis(n, false); queue<int> q; q.push(i); visc[r[i]] = true; vis[i] = true; vector<vector<int>> edges(n); int cnt = 0; while (!q.empty()) { int node = q.front(); cnt++; q.pop(); int un = r[node]; // cout << node << " " << un << endl; for (auto x : adj[node]) { int col = x.second; int vec = x.first; if (!vis[vec] && visc[col]) { vis[vec] = true; q.push(vec); } else if (!vis[vec]) { edges[col].push_back(vec); } } visc[un] = true; for (auto x : edges[un]) { if (!vis[x]) { vis[x] = true; q.push(x); } } } sz[i] = cnt; } int mn = 1e9; rep(i, 0, n) mn = min(mn, sz[i]); //rep(i, 0, n) cout << i << " "<< sz[i] << endl; rep(i, 0, n) { if (sz[i] <= mn) ans[i] = 1; else ans[i] = 0; } 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...