제출 #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...