제출 #385420

#제출 시각아이디문제언어결과실행 시간메모리
385420Keshi게임 (IOI14_game)C++17
100 / 100
540 ms17260 KiB
//In the name of God #include <bits/stdc++.h> #include "game.h" using namespace std; typedef long long ll; typedef pair<ll, ll> pll; const ll maxn = 1600; const ll mod = 1e9 + 7; const ll inf = 1e18; #define fast_io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define file_io freopen("input.txt", "r+", stdin);freopen("output.txt", "w+", stdout); #define pb push_back #define Mp make_pair #define F first #define S second #define Sz(x) ll((x).size()) #define all(x) (x).begin(), (x).end() int n, sz[maxn], dsu[maxn], g[maxn][maxn]; void initialize(int n_) { n = n_; for(ll i = 0; i < n; i++){ sz[i] = 1; dsu[i] = i; } } int hasEdge(int u, int v){ u = dsu[u]; v = dsu[v]; g[v][u]++; g[u][v]++; if(g[v][u] == sz[v] * sz[u]){ for(ll i = 0; i < n; i++){ if(dsu[i] == u){ dsu[i] = v; sz[v]++; } else if(dsu[i] == i){ g[i][v] += g[i][u]; g[v][i] += g[u][i]; } } return 1; } return 0; } /*int main(){ freopen("sample-1.in", "r", stdin); int n_; cin >> n_; initialize(n_); for(ll i = 0; i < n_ * (n_ - 1) / 2; i++){ int v, u; cin >> v >> u; cout << v << " " << u << " -> " << hasEdge(v, u) << "\n"; } return 0; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...