Submission #283175

#TimeUsernameProblemLanguageResultExecution timeMemory
283175abyyskitGame (IOI14_game)C++14
0 / 100
158 ms262148 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{
	set<int> e;
};

vector<node> g;

vector<vector<int>> G;
vector<int> pos;

void initialize(int n) {
	G.resize(n, vector<int>(n));
	g.resize(n);
	FOR(i, 0, n - 1){
		g[i].e.insert(i + 1);
		g[i + 1].e.insert(i);
		G[i][i + 1] = 1;
		G[i + 1][i] = 1;
		G[i][i] = -1;
	}
	G[n - 1][n - 1] = -1;
}

void dfs(int start, int par){
//	cout << "  dfs\n";
	for(auto nex: g[start].e){
		//cout << "  " << nex << "\n";
		if (nex != par){
			pos.pb(nex);
			dfs(nex, start);	
		}
	}
}

int hasEdge(int u, int v) {
	if (G[u][v] == 2){
		return 1;
	}
	else if (G[u][v] != 1){
		G[u][v] = -1;
		G[v][u] = -1;
		return 0;
	}
	else{
		pos = {};
		dfs(v, u);
		FOR(i, 0, pos.size()){
			if (G[u][pos[i]] == 0){
				G[u][pos[i]] = 1;
				G[pos[i]][u] = 1;
				g[u].e.insert(pos[i]);
				g[pos[i]].e.insert(u);
				g[v].e.erase(u);
				g[u].e.erase(v);
				G[u][v] = -1;
				G[v][u] = -1;
				return 0;
			}
		}
		swap(v, u);
		dfs(v, u);
		FOR(i, 0, pos.size()){
			if (G[u][pos[i]] == 0){
				G[u][pos[i]] = 1;
				G[pos[i]][u] = 1;
				g[u].e.insert(pos[i]);
				g[pos[i]].e.insert(u);
				g[v].e.erase(u);
				g[u].e.erase(v);
				G[u][v] = -1;
				G[v][u] = -1;
				return 0;
			}
		}
	}
	G[u][v] = 2;
	G[v][u] = 2;
	return 1;

}

Compilation message (stderr)

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