제출 #413384

#제출 시각아이디문제언어결과실행 시간메모리
413384AntekbGame (IOI14_game)C++14
42 / 100
1086 ms11432 KiB
#include "game.h" #include<bits/stdc++.h> #define st first #define nd second using namespace std; const int N=1505; unordered_set<int> E[N]; int n; int d[N]; vector<pair<int, int> > span; bool bfs(int s){ vector<int> V={s}; d[s]=1; vector<pair<int, int> > span2; for(int i=0; i<V.size(); i++){ int v=V[i]; for(int u:E[v]){ if(!d[u]){ d[u]=d[v]+1; V.push_back(u); span2.push_back({min(u, v), max(u, v)}); } } } for(int i:V)d[i]=0; if(V.size()==n)span=span2; return (V.size()==n); } int lo[N], pre[N], par[N]; int wsk; void dfs(int v){ pre[v]=wsk++; for(int u:E[v]){ if(!pre[u]){ par[u]=v; dfs(u); //lo[v]=min(lo[v], lo[u]); } //else if(u!=par[v])lo[v]=min(lo[v], pre[u]); } } bool check(int s){ /*wsk=1; dfs(s); for(int u=0; u<n; u++)pre[u]=0; if(wsk!=n+1)return 0; span.clear(); for(int u=0; u<n; u++)if(u!=s)span.push_back({min(u,par[u]), max(u, par[u])}); return 1;*/ return bfs(s); } mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count()); void initialize(int _n){ n=_n; for(int i=0; i<n; i++){ for(int j=0; j<i; j++){ E[i].insert(j); E[j].insert(i); } } check(rng()%n); } int hasEdge(int u, int v) { if(u>v)swap(u, v); E[u].erase(E[u].find(v)); E[v].erase(E[v].find(u)); bool b=0; //cout<<u<<" "<<v<<"\n"; for(auto j:span)if(j.st==u && j.nd==v)b=1; //for(auto j:span)cout<<j.st<<" "<<j.nd<<"\n"; //cout<<"\n"; if(!b)return 0; if(E[u].size()>E[v].size())swap(u, v); if(check(u)){ return 0; } E[u].insert(v); E[v].insert(u); return 1; }

컴파일 시 표준 에러 (stderr) 메시지

game.cpp: In function 'bool bfs(int)':
game.cpp:16:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   16 |  for(int i=0; i<V.size(); i++){
      |               ~^~~~~~~~~
game.cpp:27:13: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   27 |  if(V.size()==n)span=span2;
      |     ~~~~~~~~^~~
game.cpp:28:18: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   28 |  return (V.size()==n);
      |          ~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...