Submission #1160867

#TimeUsernameProblemLanguageResultExecution timeMemory
1160867JahonaliXGame (IOI14_game)C++20
0 / 100
0 ms324 KiB
#include <bits/stdc++.h> using namespace std; struct dsu { int n; vector<int> p, c; dsu() {} dsu(int m) { n = m; p.assign(n, 0); c.assign(n, 1); iota(p.begin(), p.end(), 0); } int find(int x) { if (x == p[x]) return x; return p[x] = find(p[x]); } void merge(int a, int b) { p[b] = a; c[a] += c[b]; } }; int n; dsu d; vector<vector<bool>> vis; void initialize(int N) { n = N, d = dsu(n), vis.assign(n, vector<bool>(n)); } int hasEdge(int u, int v) { u = d.find(u); v = d.find(v); vis[u][v] = true; if (u == v) return 0; vector<int> a, b; for (int i = 0; i < n; ++i) { if (d.find(i) == u) a.emplace_back(i); if (d.find(i) == v) b.emplace_back(i); } for (int i : a) for (int j : b) if (!vis[i][j]) return 0; d.merge(u, v); return 1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...