Submission #413436

#TimeUsernameProblemLanguageResultExecution timeMemory
413436AntekbGame (IOI14_game)C++14
15 / 100
2 ms512 KiB
#include "game.h"
#include<bits/stdc++.h>
#define st first
#define nd second
using namespace std;
const int N=1505;
vector<int> E[N];
int E2[N][N];
int n;

int r[N];
vector<pair<int, int> > span;
void initialize(int _n){
	n=_n;
	for(int i=0; i<n; i++){
		r[i]=i;
		for(int j=0; j<i; j++){
			E2[i][j]=E2[j][i]=1;
		}
	}
}
int find(int v){
	if(r[v]==v)return v;
	return v=r[v];
}
void Union(int u, int v){
	for(int i=0; i<n; i++){
		E2[u][i]+=E2[v][i];
		E2[i][u]+=E2[i][v];
	}
	r[v]=u;
}
int hasEdge(int u, int v) {
	u=find(u);
	v=find(v);
	assert(u!=v);
	E2[u][v]--;
	if(!--E2[v][u]){
		Union(u, v);
		return 1;
	}
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...