Submission #133280

#TimeUsernameProblemLanguageResultExecution timeMemory
133280sealnot123Game (IOI14_game)C++14
42 / 100
1070 ms8560 KiB
#include "game.h" #include<bits/stdc++.h> #define x first #define y second #define pb push_back #define eb emplace_back #define all(a) (a).begin(),(a).end() #define SZ(a) (int)(a).size() using namespace std; typedef long long LL; typedef pair<LL,LL> PLL; typedef pair<int,int> PII; typedef double D; typedef long double LD; const int N = 1505, SQ = 39; int n, sq; int sqg[N][N], g[N][N], l[N], r[N]; int mk[N]; queue<int> bfs; bool check(int a){ int b = a*sq; int i, j = 1; for(i = l[b]; i < r[b]; i++){ mk[i] = 0; } mk[b] = 1; bfs.push(b); while(!bfs.empty()){ int u = bfs.front(); bfs.pop(); for(i = l[u]; i < r[u]; i++){ if(!g[u][i] || mk[i]) continue; j++; mk[i] = 1; bfs.push(i); } } return j == r[b]-l[b]; } bool check_group(){ int a = (n+sq-1)/sq; int i, j = 1; for(i = 0; i < a; i++){ mk[i] = 0; } mk[0] = 1; bfs.push(0); while(!bfs.empty()){ int u = bfs.front(); bfs.pop(); for(i = 0; i < a; i++){ if(!sqg[u][i] || mk[i]) continue; mk[i] = 1; j++; bfs.push(i); } } return j == a; } void initialize(int nn) { n = nn; sq = sqrt(nn); int i, j, a, b; for(i = 0; i < n; i++){ for(j = i+1; j < n; j++){ a = i/sq; b = j/sq; if(a == b) g[i][j] = g[j][i] = 1; else sqg[a][b]++,sqg[b][a]++; } l[i] = i/sq*sq; r[i] = min(i/sq*sq+sq, n); } } int hasEdge(int u, int v) { if(u > v) swap(u, v); int i, j, a, b, res; a = u/sq; b = v/sq; if(a == b){ g[u][v] = g[v][u] = 0; res = check(a); if(!res){ g[u][v] = g[v][u] = 1; return 1; } return 0; }else{ sqg[a][b]--; sqg[b][a]--; res = check_group(); if(!res){ sqg[a][b]++; sqg[b][a]++; return 1; } return 0; } return 0; }

Compilation message (stderr)

game.cpp: In function 'int hasEdge(int, int)':
game.cpp:82:6: warning: unused variable 'i' [-Wunused-variable]
  int i, j, a, b, res;
      ^
game.cpp:82:9: warning: unused variable 'j' [-Wunused-variable]
  int i, j, a, b, res;
         ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...