Submission #420757

#TimeUsernameProblemLanguageResultExecution timeMemory
420757AugustinasJucasToy Train (IOI17_train)C++14
0 / 100
1148 ms1116 KiB
#include "train.h" #include <bits/stdc++.h> using namespace std; vector<int> charg; vector<int> priklauso; int n; const int dydis = 5e3 + 10; bool vis[dydis] = {}; bool can[dydis] = {}; int onS[dydis] = {}; bool can1[dydis] = {}; vector<int> gr[dydis]; bool dfs(int v){ if(onS[v]) return 0; if(vis[v]) return can[v]; vis[v] = 1; if(charg[v]) { can[v] = 1; return 1; } //cout << "dfs, v = " << v << endl; bool ret = 0; for(auto x : gr[v]){ onS[v]++; ret = ret | dfs(x); onS[v]--; } can[v] = ret; return ret; } bool dfs1(int v){ if(onS[v]) return 0; if(vis[v]) return can1[v]; vis[v] = 1; if(can[v]) { can1[v] = 1; return 1; } bool ret = 0; for(auto x : gr[v]){ onS[x]++; ret = ret | dfs1(x); onS[x]--; } can1[v] = ret; return ret; } vector<int> viskasPirmo(){ vector<int> ret(n, 0); for(int i = 0; i < n; i++){ // pradedu i for(int j = 0; j < n; j++) vis[j] = onS[j] = can[j] = can1[j] = 0; // cout << "i = " << i << endl; dfs(i); // cout << "gaunam, kad pasiekti ch gales: "; for(int j = 0; j < n; j++) if(can[j]) cout << j << ", "; cout << endl; for(int j = 0; j < n; j++) vis[j] = onS[j] = 0; for(int j = 0; j < n; j++) if(charg[j]) can[j] = 0; for(int j = 0; j < n; j++) if(charg[j]) ret[i] = ret[i] || dfs1(j); } return ret; } vector<int> viskasAntro(){ vector<int> ret(n); return ret; } vector<int> vienCharg(){ vector<int> ret(n); return ret; } vector<bool> isEnd(5001, 0); vector<int> prm(){ vector<int> ret(n, 0); for(int i = 0; i < n; i++){ int v = i; while(true){ if(isEnd[v]){ ret[i] = !priklauso[v]; break; }else{ v = gr[v][0]; } } } return ret; } vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v) { vector<int> res(a.size()); priklauso = a; charg = r; n = a.size(); for(int i = 0; i < (int)u.size(); i++){ gr[u[i]].push_back(v[i]); // gr[v[i]].push_back(u[i]); } int cnt[2] = {0}; for(auto x : a) cnt[x]++; int rc = 0; for(auto x : r) rc += x; bool pirmasSub = 1; for(int i = 0 ; i < u.size(); i++) { if(v[i] == u[i]) isEnd[v[i]] = 1; if(v[i] - u[i] == 0 || v[i]-u[i] == 1) continue; pirmasSub = 0; } if(pirmasSub){ return prm(); } if(cnt[1] == 0){ return viskasPirmo(); }else if(cnt[0] == 0){ return viskasAntro(); }else if(rc == 0){ return vienCharg(); } //for(int i = 0; i < n; i++) return res; }

Compilation message (stderr)

train.cpp: In function 'std::vector<int> viskasPirmo()':
train.cpp:55:46: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   55 |   for(int j = 0; j < n; j++) vis[j] = onS[j] = can[j] = can1[j] = 0;
      |                                       ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
train.cpp:60:46: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   60 |   for(int j = 0; j < n; j++) vis[j] = onS[j] = 0;
      |                                       ~~~~~~~^~~
train.cpp: In function 'std::vector<int> who_wins(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
train.cpp:103:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  103 |  for(int i = 0 ; i < u.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...