Submission #947700

#TimeUsernameProblemLanguageResultExecution timeMemory
947700Roupiq게임 (IOI14_game)C++17
42 / 100
1022 ms4184 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using ld = long double; using pii = pair<int, int>; using vi = vector<int>; #define len(x) (int)x.size() #define all(x) x.begin(), x.end() #define pb push_back #define x first #define y second vi p; vector<vi> s; int sajz, q; int Find(int v) { if (p[v] == v) return v; return p[v] = Find(p[v]); } void Union(int u, int v) { u = Find(u); v = Find(v); if (u == v) return; sajz--; for (int i = 0; i < len(p); i++) { s[i][u] += s[i][v]; s[i][v] = 0; } for (int i = 0; i < len(p); i++) { s[u][i] += s[v][i]; } p[v] = u; } void initialize(int n) { q = n * (n - 1) / 2; p.assign(n, 0); s.assign(n, vi(n)); sajz = 0; for (int i = 0; i < n; i++) p[i] = i; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) if(i != j) s[i][j] = 1; sajz = n; } void print() { vector<vector<int>> ve(len(p)); for (int i = 0; i < len(p); i++) { ve[Find(i)].emplace_back(i); } for (int i = 0; i < len(p); i++) { // cout << i << ": "; // for (auto v : ve[i]) // cout << v << " "; // cout << "\n"; // for (auto l : s[i]) // cout << l << " "; // cout << "\n"; } } int hasEdge(int u, int v) { print(); q--; u = Find(u); v = Find(v); s[u][v]--; s[v][u]--; bool jest = 0; if (s[u][v] == 0) { Union(u, v); jest = 1; } if (q && sajz == 1) { cerr << "Bardzo źle 1\n"; exit(2137); } if (!q && sajz != 1) { cerr << "Bardzo źle 2\n"; exit(2137); } return jest; } /* 5 2 3 0 4 2 4 3 4 1 3 0 3 1 4 0 2 0 1 1 2 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...