제출 #1265142

#제출 시각아이디문제언어결과실행 시간메모리
1265142canhnam357Game (IOI14_game)C++20
100 / 100
212 ms15880 KiB
#include <bits/stdc++.h> #include "game.h" using namespace std; #define N 1500 int S[N][N], R[N], T[N]; int n; void initialize(int _n) { n = _n; for (int i = 0; i < n; i++) { R[i] = i; for (int j = i + 1; j < n; j++) { S[i][j] = S[j][i] = 1; } } } int hasEdge(int u, int v) { u = R[u]; v = R[v]; if (u == v) return 0; if (S[u][v] > 1) { S[u][v]--; S[v][u]--; return 0; } for (int i = 0; i < n; i++) T[i] = 0; for (int i = 0; i < n; i++) { if (R[i] != u && R[i] != v && !T[R[i]]) { T[R[i]] = 1; int k = S[u][R[i]] + S[v][R[i]]; S[u][R[i]] = S[R[i]][u] = k; } } for (int i = 0; i < n; i++) { if (R[i] == v) R[i] = u; } return 1; } // int read_int() { // int x; // assert(scanf("%d", &x) == 1); // return x; // } // int main() { // int n, u, v; // n = read_int(); // initialize(n); // for (int i = 0; i < n * (n - 1) / 2; i++) { // u = read_int(); // v = read_int(); // printf("%d\n", hasEdge(u, v)); // } // return 0; // }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...