이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "game.h"
#include<iostream>
using namespace std;
#define forn(i, n) for(int i=0; i<(int)n; ++i)
const int MAXN=1510;
int n, number[MAXN][MAXN], par[MAXN], si[MAXN];
int root(int a){
while(par[a]!=a) a=par[a]=par[par[a]];
return a;
}
void initialize(int N) {
n=N;
forn(i, n) par[i]=i, si[i]=1;
}
int hasEdge(int a, int b){
int ra=root(a), rb=root(b);
if(ra==rb) return 0;
if(si[ra]<si[rb]) swap(ra, rb);
if(si[ra]*si[rb]-1 == number[ra][rb]){
forn(i, n) number[i][ra]+=number[i][rb];
forn(i, n) number[ra][i]+=number[rb][i];
si[ra]+=si[rb];
par[rb]=ra;
return 1;
}
else{
number[ra][rb]++;
number[rb][ra]++;
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... |