Submission #69956

#TimeUsernameProblemLanguageResultExecution timeMemory
69956E869120Toy Train (IOI17_train)C++14
5 / 100
1202 ms100080 KiB
#include "train.h" #include <bits/stdc++.h> using namespace std; int N, M, C[100009], R[100009], U[100009], V[100009]; int subtasks(){ int ret = 0; for(int i=0;i<M;i++){ if(U[i]==V[i] || U[i]+1==V[i]) ret++; } if(ret==M) return 1; int c1=0,c2=0,rr=0; for(int i=0;i<N;i++){ if(C[i]==1) c1++; if(C[i]==2) c2++; if(R[i]==1) rr++; } if(c2==0) return 3; if(c1==0) return 4; if(rr==1) return 5; return 6; } int p1[5009][2],dist[5009][5009];vector<int>X[5009]; void solve(){ for(int i=0;i<M;i++){X[U[i]].push_back(V[i]);X[V[i]].push_back(U[i]);} for(int i=0;i<N;i++){ queue<int>Q;Q.push(i); while(!Q.empty()){ int pos=Q.front();Q.pop(); for(int j=0;j<X[pos].size();j++){ if(dist[i][X[pos][j]]==0){ dist[i][X[pos][j]]=1; Q.push(X[pos][j]); } } } } } 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 i=0;i<N;i++){if(a[i]==1) C[i]=1;else C[i]=2; R[i]=r[i];} for(int i=0;i<M;i++){U[i]=u[i];V[i]=v[i];} int Subtask = subtasks(); if(Subtask==1){ for(int i=0;i<M;i++){ if(V[i]==U[i]) p1[U[i]][0]=1; else p1[U[i]][1]=1; } vector<int>ans(N,0); for(int i=0;i<N;i++){ for(int j=i;j<N;j++){ if(C[j]==1 && R[j]==1 && p1[j][0]==1) {ans[i]=1;break;} if(C[j]==2 && R[j]==0 && p1[j][0]==1) {ans[i]=0;break;} if(p1[j][1]==0){ if(R[j]==1)ans[i]=1; break; } } } return ans; } if(Subtask==3){ solve();vector<int>ans(N,0); for(int i=0;i<N;i++){ for(int j=0;j<N;j++){ if((i==j || dist[i][j]==1) && dist[j][j]==1 && R[j]==1) ans[i]=1; } } return ans; } return vector<int>{}; }

Compilation message (stderr)

train.cpp: In function 'void solve()':
train.cpp:33:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(int j=0;j<X[pos].size();j++){
                ~^~~~~~~~~~~~~~
#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...