Submission #947619

#TimeUsernameProblemLanguageResultExecution timeMemory
947619Roupiq게임 (IOI14_game)C++17
0 / 100
1 ms348 KiB
#include <ext/pb_ds/assoc_container.hpp> using namespace __gnu_pbds; #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, s; int leaf; 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; s[u] += s[v]; p[v] = u; } void initialize(int n) { p.resize(n); s.resize(n, n - 1); for (int i = 0; i < n; i++) p[i] = i; } int hasEdge(int u, int v) { s[u]--; s[v]--; if(s[u] == 0 || s[v] == 0) { Union(u, v); if(s[Find(u)] == 1) leaf = Find(u); else leaf = false; return 1; } if(leaf == false && s[u] == 1) { Union(u, v); if(s[Find(u)] == 1) leaf = Find(u); return 1; } if(leaf == false && s[v] == 1) { Union(u, v); if(s[Find(u)] == 1) leaf = Find(u); return 1; } return 0; } /* */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...