Submission #1147717

#TimeUsernameProblemLanguageResultExecution timeMemory
1147717KickingKunGame (IOI14_game)C++20
42 / 100
1091 ms540 KiB
#include <bits/stdc++.h>
#include "game.h"

using namespace std;

const int N = 1505;

int sz; bitset <N> adj[N];
void initialize(int n) {
	sz = n;
	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++)
			if (i != j) adj[i].set(j);
}

int hasEdge(int x, int y) {
    adj[x].reset(y); adj[y].reset(x); // try
    bitset <N> candidate; int n = sz;
    for (int i = 0; i < n; i++)
    	candidate.set(i);
    
    queue <int> q; q.emplace(0); candidate.reset(0);
    int cnt = 1;
    while (!q.empty()) {
		int u = q.front(); q.pop();
		for (int v = 0; v < n; v++) {
			if (candidate.test(v) && adj[u].test(v)) {
				q.emplace(v); candidate.reset(v);
				++cnt;
			}
		}
	}
	
	if (cnt == n) return 0;
	else {
		adj[x].set(y); adj[y].set(x);
		return 1;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...