Submission #1272008

#TimeUsernameProblemLanguageResultExecution timeMemory
1272008thuhienneGame (IOI14_game)C++20
0 / 100
1 ms340 KiB
#include "game.h"

int root[1509],size[1509],edge[1509][1509],n;
//root i: dsu bth
//edge i j: da co bao nhieu canh duoc hoi giua 2 tplt co i lam root va j lam root

void initialize(int _n) {
	n = _n;
	for (int i = 0;i < n;i++) root[i] = i,size[i] = 1;
}

int getroot(int node) {
	return (node == root[node] ? node : root[node] = getroot(root[node]));
}

int hasEdge(int u, int v) {
	int ru = getroot(u),rv = getroot(v);
	
	edge[ru][rv]++;edge[rv][ru]++;
	
	if (edge[ru][rv] == size[ru] * size[rv]) {
		root[ru] = rv;
		for (int i = 0;i < n;i++) {
			edge[i][rv] += edge[i][ru];
			edge[rv][i] += edge[ru][i];
		}
		return 1;
	} else return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...