Submission #39643

#TimeUsernameProblemLanguageResultExecution timeMemory
39643funcsrGame (IOI14_game)C++14
42 / 100
1000 ms13008 KiB
#include "game.h" #include <vector> #include <iostream> #include <set> #include <queue> #include <algorithm> #include <cassert> using namespace std; typedef pair<int, int> P; #define rep(i, n) for (int i=0; i<(n); i++) int U[1500]; int find(int x) { if (U[x] == x) return x; return U[x] = find(U[x]); } void unite(int x, int y) { x = find(x), y = find(y); if (x == y) return; U[x] = y; } int N; bool G[1500][1500]; void initialize(int n) { N = n; rep(i, N) U[i] = i; } int hasEdge(int u, int v) { int a = find(u), b = find(v); if (a == b) { assert(false); //G[u][v] = G[v][u] = true; //return 1; } int unused = 0; G[u][v] = G[v][u] = true; rep(i, N) rep(j, N) if (i != j && find(i) == a && find(j) == b) unused += G[i][j]==0; if (unused == 0) { unite(u, v); return 1; } else return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...