Submission #101244

#TimeUsernameProblemLanguageResultExecution timeMemory
101244dantoh000ICC (CEOI16_icc)C++14
0 / 100
334 ms632 KiB
#include "icc.h" #include <bits/stdc++.h> using namespace std; typedef vector<int> vi; vi p, rk, sz; void init(int n){ for(int i = 0; i < n; i++){ p.push_back(i); rk.push_back(0); sz.push_back(1); } } int findset(int x){ return p[x] == x ? x : p[x] = findset(p[x]); } bool sameset(int i, int j){ return findset(i) == findset(j); } void unionset(int i, int j){ int x = findset(i), y = findset(j); if (x == y) return; if (rk[x] < rk[y]){ p[x] = y; sz[y] += sz[x]; } else{ p[y] = x; sz[x] += sz[y]; if (rk[x] == rk[y]) rk[x]++; } } void run(int n) { int cur = 0; init(n); int a[1], b[1]; while (cur < n){ for (a[0] = 1; a[0] <= n; a[0]++){ for (b[0] = 1; b[0] <= n; b[0]++){ if (sameset(a[0]-1,b[0]-1)) continue; if (query(1,1,a,b) == 1){ setRoad(a[0],b[0]); unionset(a[0]-1,b[0]-1); } } } } }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...