Submission #379848

#TimeUsernameProblemLanguageResultExecution timeMemory
379848Mounir게임 (IOI14_game)C++14
0 / 100
1 ms492 KiB
#include "game.h" #include <bits/stdc++.h> using namespace std; const int N = 2000; int nFaits[N][N]; int ens[N], taille[N]; int nNoeuds; set<int> zones; void initialize(int n) { nNoeuds = n; for (int noeud = 0; noeud < nNoeuds; ++noeud){ ens[noeud] = noeud; taille[noeud] = 1; zones.insert(noeud); } } int find(int noeud){ if (ens[noeud] != noeud) ens[noeud] = find(ens[noeud]); return ens[noeud]; } void add(int a, int b, int delta){ nFaits[a][b] += delta; nFaits[b][a] += delta; } void fusion(int pere, int fils){ zones.erase(fils); for (int zone : zones) add(pere, zone, nFaits[zone][fils]); taille[pere] += taille[fils]; ens[fils] = pere; } int hasEdge(int u, int v) { u = find(u), v = find(v); nFaits[u][v]++; if (nFaits[u][v] == taille[u] * taille[v]){ fusion(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...