Submission #28898

#TimeUsernameProblemLanguageResultExecution timeMemory
28898noobprogrammerGame (IOI14_game)C++14
100 / 100
709 ms19672 KiB
#include "game.h"
#include <bits/stdc++.h>
using namespace std ;
#define ii pair<int,int>
#define fi first
#define se second
#define vi vector<int>


int n , cnt[1505] , used[1505] , par[1505] , adj[1505][1505] ;

int find_root(int x){
	if(par[x] == x) return x ;
	return par[x] = find_root(par[x]) ;
}

void initialize(int N) {
	n = N ; 
	for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(i != j) adj[i][j] = 1;
	for(int i=0;i<n;i++) par[i] = i ; 
}

int hasEdge(int u, int v) {
	int pu = find_root(u), pv = find_root(v) ;
	if(pu == pv) return 0 ; 
	adj[pu][pv]-- ; adj[pv][pu]--;
	if(adj[pv][pu] == 0) {
		par[pv] = pu ; 
		int rt ; 
		for(int i=0;i<n;i++){
			rt = find_root(i) ;
			if(rt != i || rt == pu) continue ;
			adj[pu][i] = adj[pu][i] + adj[pv][i] ;
			adj[i][pu] = adj[pu][i] ;
		}
    	return 1;
    }
    return  0 ;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...