제출 #715087

#제출 시각아이디문제언어결과실행 시간메모리
715087Ahmed57게임 (IOI14_game)C++14
0 / 100
1 ms340 KiB
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,O3")

using namespace std;
int pr[1501],gs[1501],rem[1501];
int ed[1501][1501];
int findleader(int x){
    if(pr[x]==x){
        return x;
    }
    return pr[x] = findleader(pr[x]);
}
int N;
void initialize(int n){
    N = n;
    for(int i = 0;i<=n;i++)pr[i] = i,gs[i] = 1,rem[i] = 0;
}
int hasEdge(int a,int b){
    a = findleader(a), b = findleader(b);
    if(a==b)return 0;
    if(gs[a]<gs[b])swap(a,b);
    if((gs[a]*(N-1))-2*rem[a]-ed[a][a]>1&&(gs[b]*(N-1))-2*rem[b]-ed[b][b]>1){
        ed[a][b]++;
        ed[b][a]++;
        rem[a]++;rem[b]++;
        return 0;
    }
    gs[a]+=gs[b];
    rem[a]+=rem[b];
    pr[b]=a;
    for(int i = 0;i<N;i++){
        ed[a][i]+=ed[b][i];
        ed[i][a]+=ed[i][b];
    }
    return 1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...