Submission #1267824

#TimeUsernameProblemLanguageResultExecution timeMemory
1267824cmiucGame (IOI14_game)C++20
0 / 100
1 ms328 KiB
#include <iostream>
#include <vector>

#include "game.h"
using namespace std;
int M, s[1505][1505], par[1505];

void initialize(int N){
	M = N;
	for (int i=1;i<=M;i++)
		for (int j=1;j<=M;j++)
			s[i][j] = (i != j);
}

int root(int v){
	if (par[v] == 0)
		return v;
	par[v] = root(par[v]);
	return par[v];
}

int hasEdge(int u, int v){
	u = root(u);
	v = root(v);

	if (s[u][v] != 1){
		s[u][v] = s[v][u] = s[u][v] - 1;
		return 0;
	}
	for (int i =1;i<=M;i++)
		if (i != u and i != v and root(i) == i)
			s[u][i] = s[i][u] = s[i][v] + s[i][u];
	par[v] = u;
	return 1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...