Submission #283235

#TimeUsernameProblemLanguageResultExecution timeMemory
283235abyyskitGame (IOI14_game)C++14
100 / 100
675 ms19960 KiB
#include "game.h"
#include<bits/stdc++.h>
using namespace std;
#define FOR(i, x, y) for(int i = x; i < y; ++i)
#define pb push_back

struct node{
	bool vis = false;
	vector<int> e;
	int c;
	int par;
	int child;
};

vector<node> g;

int Find(int a){
	if (g[a].par == a){
		return g[a].par;
	}
	g[a].par = Find(g[a].par);
	return g[a].par;
}

void Onion(int a, int b){
	int ap = Find(a);
	int bp = Find(b);
	if (g[ap].child < g[bp].child){
		swap(ap, bp);
	}
	g[ap].child += g[bp].child;
	g[bp].par = ap;
	FOR(i, 0, g.size()){
		g[ap].e[i] += g[bp].e[i];
		g[i].e[ap] = g[ap].e[i];	
	}
}

void initialize(int n) {
	g.resize(n);
	FOR(i, 0, n){
		g[i].e.resize(n, 1);
		g[i].c = n;
		g[i].par = i;
		g[i].child = 1;
	}
}

int hasEdge(int u, int v) {
	int up = Find(u);
	int vp = Find(v);
	if (up == vp){
		return 0;
	}
	if (g[up].e[vp] != 1){
		g[up].e[vp]--;
		g[vp].e[up]--;
		return 0;
	}
	else{
		Onion(up, vp);
		return 1;
	}
	return 1;
}

Compilation message (stderr)

game.cpp: In function 'void Onion(int, int)':
game.cpp:4:39: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<node>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define FOR(i, x, y) for(int i = x; i < y; ++i)
......
   33 |  FOR(i, 0, g.size()){
      |      ~~~~~~~~~~~~~~                    
game.cpp:33:2: note: in expansion of macro 'FOR'
   33 |  FOR(i, 0, g.size()){
      |  ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...