제출 #132632

#제출 시각아이디문제언어결과실행 시간메모리
132632rondojimToy Train (IOI17_train)C++17
28 / 100
361 ms3072 KiB
#include "train.h" #include<vector> #include<iostream> #include<queue> using namespace std; #define rep(i,a,b) for(int i=a;i<b;i++) vector<int> nei[10000]; vector<int> inv[10000]; bool active[10000]; int owner[10000]; int charge[10000]; int n; bool S[10000]; int count[10000]; int reference; void extend(int node){ if(S[node])return; S[node]=true; //cout<<node<<endl; rep(i,0,inv[node].size()){ int v=inv[node][i]; if(active[v]){ count[v]++; if(!S[v]){ if(reference==owner[v]){ //cout<<v<<endl; extend(v); }else{ if(count[v]==nei[v].size()){ extend(v); } } } } } } void solve(){ //rep(i,0,n)cout<<active[i]<<" "; //cout<<endl; reference=1; rep(i,0,n)count[i]=0; rep(i,0,n){ S[i]=false; } rep(i,0,n){ if(charge[i] && active[i])extend(i); } int cont=0; rep(i,0,n){ if(!S[i] && active[i])S[i]=true; else S[i]=false; cont+=S[i]; //cout<<S[i]<<endl; //cout<<S[i]<<" "; }//cout<<endl; if(cont==0)return; reference=0; rep(i,0,n)count[i]=0; queue<int> q; rep(i,0,n){ if(S[i] && active[i]){ q.push(i); S[i]=false; } } while(!q.empty()){ extend(q.front()); q.pop(); } rep(i,0,n){ if(active[i] && S[i]){ active[i]=false; } } solve(); } std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) { n=a.size(); rep(i,0,n){ owner[i]=a[i]; charge[i]=r[i]; } rep(i,0,u.size()){ nei[u[i]].push_back(v[i]);inv[v[i]].push_back(u[i]); } rep(i,0,n)active[i]=true; solve(); vector<int> answer; rep(i,0,n){ answer.push_back(active[i]); } return answer; }

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

train.cpp: In function 'void extend(int)':
train.cpp:6:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define rep(i,a,b) for(int i=a;i<b;i++)
train.cpp:20:7:
   rep(i,0,inv[node].size()){
       ~~~~~~~~~~~~~~~~~~~~       
train.cpp:20:3: note: in expansion of macro 'rep'
   rep(i,0,inv[node].size()){
   ^~~
train.cpp:30:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    if(count[v]==nei[v].size()){
       ~~~~~~~~^~~~~~~~~~~~~~~
train.cpp: In function 'std::vector<int> who_wins(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
train.cpp:6:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define rep(i,a,b) for(int i=a;i<b;i++)
train.cpp:86:7:
   rep(i,0,u.size()){
       ~~~~~~~~~~~~               
train.cpp:86:3: note: in expansion of macro 'rep'
   rep(i,0,u.size()){
   ^~~
#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...