Submission #427540

#TimeUsernameProblemLanguageResultExecution timeMemory
427540markthitrinToy Train (IOI17_train)C++14
0 / 100
194 ms262148 KiB
#include "train.h" #include <vector> #include <iostream> int N,M; std::vector<int> f[5005]; std::vector<int> inv_f[5005]; std::vector<int> ans; int degree[5005]; int m[5005]; bool come[5005]; bool reachable[5005]; void inv_bfs(std::vector<int>& a,int pos){ if(come[pos]) return; come[pos] = true; for(int q = 0;q<inv_f[pos].size();q++){ m[inv_f[pos][q]]++; if(a[inv_f[pos][q]] == 0 && degree[inv_f[pos][q]] == m[inv_f[pos][q]]){ inv_bfs(a,inv_f[pos][q]); } else inv_bfs(a,inv_f[pos][q]); } } void bfs(std::vector<int>& a,int pos){ if(come[pos]) reachable[pos] = true; else return; for(int q = 0 ;q<f[pos].size();q++){ bfs(a,f[pos][q]); } } void last_func(std::vector<int> a,int pos){ if(a[pos] == 0 && m[pos] !=degree[pos] && !reachable[pos]) return; if(ans[pos] == 1) return; ans[pos] = 1; for(int q = 0 ;q<inv_f[q].size();q++){ m[inv_f[pos][q]]++; last_func(a,inv_f[pos][q]); } } std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) { N = a.size(); M = u.size(); for(int q = 0 ;q<M;q++){ f[u[q]].push_back(v[q]); inv_f[v[q]].push_back(u[q]); degree[u[q]]++; } for(int q = 0;q<N;q++){ if(r[q]){ for(int w = 0 ;w<N;w++){ m[w] = 0; come[w] = false; } inv_bfs(a,q); bfs(a,q); } } for(int w = 0;w<N;w++){ m[w] = 0; } for(int q = 0;q<N;q++){ ans.push_back(0); } for(int q= 0;q<N;q++){ if(reachable[q]) last_func(a,q); } return ans; } /* 2 4 0 1 1 0 0 0 0 1 1 0 1 1 1 1 */

Compilation message (stderr)

train.cpp: In function 'void inv_bfs(std::vector<int>&, int)':
train.cpp:16:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   16 |     for(int q = 0;q<inv_f[pos].size();q++){
      |                   ~^~~~~~~~~~~~~~~~~~
train.cpp: In function 'void bfs(std::vector<int>&, int)':
train.cpp:29:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |     for(int q = 0 ;q<f[pos].size();q++){
      |                    ~^~~~~~~~~~~~~~
train.cpp: In function 'void last_func(std::vector<int>, int)':
train.cpp:39:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   39 |     for(int q = 0 ;q<inv_f[q].size();q++){
      |                    ~^~~~~~~~~~~~~~~~
#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...