Submission #427579

#TimeUsernameProblemLanguageResultExecution timeMemory
427579TLP39Toy Train (IOI17_train)C++14
100 / 100
350 ms1228 KiB
#include "train.h" #include<bits/stdc++.h> using namespace std; int n,m; vector<int> point_to[5003]; int ori_outdeg[5003]={}; int temp_outdeg[5003]; bool loop[5003]; bool temp_loop[5003]; int cou_loop=0,cou_temp_loop; bool fin_res[5003]; bool getreach() { queue<int> q; int tt; for(int i=0;i<n;i++) temp_outdeg[i]=ori_outdeg[i]; for(int i=0;i<n;i++) temp_loop[i]=false; cou_temp_loop=0; for(int j=0;j<n;j++) { if(!loop[j]) continue; for(int i=0;i<point_to[j].size();i++) { temp_outdeg[point_to[j][i]]--; if(!temp_outdeg[point_to[j][i]]) q.push(point_to[j][i]); } } while(!q.empty()) { tt=q.front(); q.pop(); temp_loop[tt]=true; if(loop[tt]) { cou_temp_loop++; continue; } for(int i=0;i<point_to[tt].size();i++) { temp_outdeg[point_to[tt][i]]--; if(!temp_outdeg[point_to[tt][i]]) q.push(point_to[tt][i]); } } for(int i=0;i<n;i++) {loop[i]=min(loop[i],temp_loop[i]);fin_res[i]=temp_loop[i];} int temp2=cou_loop; cou_loop=cou_temp_loop; return temp2==cou_temp_loop; } std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) { std::vector<int> res(a.size(),1); n=a.size(); m=u.size(); for(int i=0;i<m;i++) { point_to[v[i]].push_back(u[i]); ori_outdeg[u[i]]++; } for(int i=0;i<n;i++) {loop[i]=r[i]; cou_loop+=r[i];} for(int i=0;i<n;i++) if(a[i]) ori_outdeg[i]=1; while(!getreach()) continue; for(int i=0;i<n;i++) { res[i]=fin_res[i]; } return res; }

Compilation message (stderr)

train.cpp: In function 'bool getreach()':
train.cpp:23:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   23 |        for(int i=0;i<point_to[j].size();i++)
      |                    ~^~~~~~~~~~~~~~~~~~~
train.cpp:40:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |        for(int i=0;i<point_to[tt].size();i++)
      |                    ~^~~~~~~~~~~~~~~~~~~~
#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...