Submission #1051128

#TimeUsernameProblemLanguageResultExecution timeMemory
1051128TAhmed33Game (IOI14_game)C++98
0 / 100
0 ms348 KiB
#include "game.h" #include <bits/stdc++.h> using namespace std; int n; set <int> dd[1502]; vector <vector <int>> comps; void initialize (int N) { n = N; comps.clear(); for (int i = 0; i < n; i++) dd[i].clear(); for (int i = 0; i < n; i++) { comps.push_back({i}); } } int id (int x) { int ii = -1; for (int j = 0; j < int(comps.size()); j++) { bool flag = 0; for (auto k : comps[j]) { if (k == x) { flag = 1; break; } } if (flag) { ii = j; break; } } return ii; } int get (int x) { int cnt = 0; for (auto j : comps[x]) { for (auto k : dd[j]) { if (id(k) != x) { cnt++; } } } return cnt; } int sze (int x) { return comps[x].size(); } void merge (int x, int y) { for (auto j : comps[y]) { comps[x].push_back(j); } comps.erase(comps.begin() + y); } int hasEdge (int u, int v) { int ii = id(u), jj = id(v); assert(ii != jj); assert(ii != -1); assert(jj != -1); if (jj < ii) { swap(jj, ii); swap(u, v); } if (get(ii) == sze(ii) * (n - sze(ii)) - 1 || get(jj) == sze(jj) * (n - sze(jj)) - 1) { merge(ii, jj); return 1; } dd[u].insert(v); dd[v].insert(u); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...