Submission #381638

#TimeUsernameProblemLanguageResultExecution timeMemory
381638vishesh312Game (IOI14_game)C++17
15 / 100
2 ms512 KiB
#include "bits/stdc++.h" #include "game.h" using namespace std; /* #include <ext/pb_ds/assoc_container.hpp> using namespace __gnu_pbds; using ordered_set = tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>; */ #define all(x) begin(x), end(x) #define sz(x) (int)x.size() using ll = long long; const int mod = 1e9+7; vector<int> siz, link; int n; vector<vector<int>> cnt; void initialize(int _n) { n = _n; siz.resize(n, 1); link.resize(n); for (int i = 0; i < n; ++i) link[i] = i; cnt.resize(n); for (auto &x : cnt) x.resize(n); } int find(int x) { while (link[x] != x) x = link[x]; return x; } bool same(int a, int b) { return find(a) == find(b); } int hasEdge(int u, int v) { u = find(u); v = find(v); if (same(u, v)) { return 1; } if (u < v) swap(u, v); if (cnt[u][v] < siz[u] * siz[v] - 1) { ++cnt[u][v]; return 0; } siz[u] += siz[v]; link[v] = u; for (int i = 0; i < u; ++i) cnt[u][i] += cnt[v][i]; for (int i = u+1; i < n; ++i) cnt[i][u] += cnt[i][v]; return 1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...