Submission #121649

#TimeUsernameProblemLanguageResultExecution timeMemory
121649andremfqGame (IOI14_game)C++17
0 / 100
2 ms384 KiB
#include<bits/stdc++.h>
#include "game.h"
using namespace std;
const int MAXN=1510;
 
set<int> s[MAXN];
int n,U,V,pai[MAXN],prof[MAXN],q[MAXN][MAXN];
 
void initialize(int n)
{
	for(int i=0;i<n;i++)
	{
		pai[i]=i;
		for(int j=i+1;j<n;j++)
			q[i][j]=1,	q[j][i]=1;
	}	
}
 
int fd(int v)
{
	if(v==pai[v])	return v;
	return pai[v]=fd(pai[v]);
}
 
void join(int a,int b)
{
	a=fd(a);	b=fd(b);
	if(a==b)	return;
	
	if(prof[a]>prof[b])		swap(a,b);
	
	for(int i=0;i<n;i++)	q[b][i]+=q[a][i];	
	pai[a]=b;
	
	if(prof[a]==prof[b])	prof[b]++;
}
 
int hasEdge(int u,int v)
{	
	int U=fd(u),	V=fd(v);
	if(q[U][V]>1 || q[V][U]>1)
	{
		q[U][V]--;	q[V][U]--;
		return 0;
	}
	
	join(U,V);
	return 1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...