Submission #1165089

#TimeUsernameProblemLanguageResultExecution timeMemory
1165089boclobanchatGame (IOI14_game)C++20
15 / 100
0 ms328 KiB
#include"game.h"
#include<bits/stdc++.h>
using namespace std;
int dsu[1666],F[1666][1666],cnt[1666];
int root(int i)
{
	if(!dsu[i]) return i;
	return dsu[i]=root(dsu[i]);
}
void merge(int i,int j)
{
	if((i=root(i))==(j=root(j))) return ;
	dsu[j]=i,cnt[i]+=cnt[j];
}
void initialize(int n)
{
	for(int i=1;i<=n;i++) cnt[i]=1;
	return ;
}
int hasEdge(int u,int v)
{
	u=root(++u),v=root(++v);
	if(u>v) swap(u,v);
	if(++F[u][v]==cnt[u]*cnt[v])
	{
		merge(u,v);
		return 1;
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...