이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "bits/stdc++.h"
#include "game.h"
using namespace std;
using ll = long long;
const int maxn=1505;
int p[maxn],sz[maxn];
map<int,int>m[maxn];
void initialize(int n) {
for(int i = 0;i < n;i++){
p[i] = i;
sz[i] = 1;
}
}
int ata(int x){
if(p[x] == x) return x;
return p[x] = ata(p[x]);
}
int hasEdge(int u, int v) {
u = ata(u);
v = ata(v);
assert(u != v);
if((int)m[u].size() < (int)m[v].size()) swap(u,v);
int now = 0;
if(m[v].find(u) != m[v].end()) now = m[v][u];
if(now == sz[u] * sz[v] - 1){
for(auto j : m[v]){
m[u][j.first] += j.second;
m[j.first].erase(v);
m[j.first][u] += j.second;
}
m[v].clear();
p[v] = u;
sz[u] += sz[v];
sz[v] = 0;
return 1;
}
m[u][v]++;
m[v][u]++;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |