Submission #153699

#TimeUsernameProblemLanguageResultExecution timeMemory
153699dennisstarGame (IOI14_game)C++11
0 / 100
2 ms380 KiB
#include "game.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int clr[1550], cnt[1550];

int fcnt, ucnt, n;

void Union(int a, int b) {
	cnt[a]+=cnt[b]-2;
	ucnt--;
	for (int i=0; i<n; i++) {if (clr[i]==b) clr[i]=a;}
}

void initialize(int n_) {
	n=n_;
	ucnt=n; fcnt=0;
	for (int i=0; i<n; i++) {clr[i]=i; cnt[i]=n-1;}
}

int hasEdge(int u, int v) {
	fcnt++;
	if (ucnt==2) return 0;
	u=clr[u]; v=clr[v];
	if (cnt[u]+cnt[v]<=3||cnt[u]==1||cnt[v]==1) {
		Union(u, v);
		return 1;
	} 
	else {
		cnt[u]--; cnt[v]--;
		return 0;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...