Submission #291388

#TimeUsernameProblemLanguageResultExecution timeMemory
291388TMJNGame (IOI14_game)C++17
100 / 100
563 ms25368 KiB
#include "game.h"

int N;
int C[1500][1500];
int T[1500];

int par(int x){
	if(T[x]<0)return x;
	return T[x]=par(T[x]);
}

void uni(int x,int y){
	x=par(x);
	y=par(y);
	if(x==y)return;
	T[x]+=T[y];
	T[y]=x;
	for(int i=0;i<N;i++){
		C[i][x]+=C[i][y];
	}
	for(int i=0;i<N;i++){
		C[x][i]+=C[y][i];
	}
}

void initialize(int n) {
	N=n;
	for(int i=0;i<N;i++){
		T[i]=-1;
	}
}

int hasEdge(int u, int v) {
	u=par(u);
	v=par(v);
	if(C[u][v]==T[u]*T[v]-1){
		uni(u,v);
		return 1;
	}
	else{
		C[u][v]++;
		C[v][u]++;
		return 0;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...