Submission #1147529

#TimeUsernameProblemLanguageResultExecution timeMemory
1147529KickingKunGame (IOI14_game)C++20
0 / 100
1 ms328 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 u, int v) {
    adj[u].reset(v); adj[v].reset(u); // 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();
		int v = (candidate & adj[u])._Find_first();
		if (v < N) q.emplace(v), candidate.reset(v), ++cnt;
	}
	
	if (cnt == n) return 0;
	else {
		adj[u].set(v); adj[v].set(u);
		return 1;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...