제출 #372478

#제출 시각아이디문제언어결과실행 시간메모리
372478doowey장난감 기차 (IOI17_train)C++14
100 / 100
1568 ms1772 KiB
#include <bits/stdc++.h> #include "train.h" using namespace std; typedef pair<int, int> pii; typedef long long ll; #define fi first #define se second #define mp make_pair const int N = 5010; bool ban[N]; bool inq[N]; int n, m; vector<int> a; vector<int> r; vector<int> u; vector<int> v; vector<int> in[N]; int deg[N]; vector<int> f(int bit, vector<int> init){ for(int i = 0 ; i < n; i ++ ){ inq[i]=false; in[i].clear(); deg[i]=0; } queue<int> ads; for(auto x : init){ ads.push(x); inq[x]=true; } for(int i =0 ; i < m ; i ++ ){ if(!ban[u[i]] && !ban[v[i]]){ in[v[i]].push_back(u[i]); deg[u[i]] ++ ; } } for(int i = 0 ; i < n; i ++ ){ if(a[i] == bit) deg[i]=1; } int node; while(!ads.empty()){ node = ads.front(); ads.pop(); for(auto x : in[node]){ if(inq[x]) continue; deg[x]--; if(deg[x] == 0){ ads.push(x); init.push_back(x); inq[x]=true; } } } return init; } vector<int> sol; int has[N]; vector<int> who_wins(vector<int> _a, vector<int> _r, vector<int> _u, vector<int> _v) { a = _a; r = _r; u = _u; v = _v; n = _a.size(); m = u.size(); bool ok; sol.resize(n); int rem = 0; while(1){ ok = false; vector<int> start; rem = 0; for(int i = 0 ; i < n; i ++ ){ if(r[i] && !ban[i]) start.push_back(i); if(!ban[i]){ rem ++ ; } has[i]=false; } if(start.empty()){ for(int i = 0 ; i < n; i ++ ){ if(!ban[i]){ ban[i]=true; sol[i]=0; } } break; } start = f(1, start); for(auto x : start) has[x]=true; if(start.size() == rem){ for(int i = 0 ; i < n; i ++ ){ if(!ban[i]){ sol[i]=1; ban[i]=true; } } break; } vector<int> nw; for(int i = 0 ; i < n; i ++ ){ if(!ban[i] && !has[i]){ nw.push_back(i); } } nw = f(0, nw); for(auto x : nw){ sol[x]=0; ban[x]=true; } } return sol; }

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

train.cpp: In function 'std::vector<int> who_wins(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
train.cpp:97:25: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   97 |         if(start.size() == rem){
      |            ~~~~~~~~~~~~~^~~~~~
train.cpp:72:10: warning: variable 'ok' set but not used [-Wunused-but-set-variable]
   72 |     bool ok;
      |          ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...