Submission #106452

#TimeUsernameProblemLanguageResultExecution timeMemory
106452KLPPToy Train (IOI17_train)C++14
11 / 100
17 ms2176 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]; 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(){ 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]; } if(cont==0)return; reference=0; rep(i,0,n){ if(S[i] && active[i]){ S[i]=false; extend(i); } } rep(i,0,n){ if(active[i] && S[i]){ active[i]=false; } } } 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; }

Compilation message (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:29:13: 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:73:7:
   rep(i,0,u.size()){
       ~~~~~~~~~~~~               
train.cpp:73: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...