Submission #113837

#TimeUsernameProblemLanguageResultExecution timeMemory
113837faustaadp장난감 기차 (IOI17_train)C++17
27 / 100
2045 ms50896 KiB
#include "train.h" #include<bits/stdc++.h> typedef long long ll; #define pb push_back #define mp make_pair #define fi first #define se second using namespace std; ll m,n,a[5050],b[5050],cic[5050],nx[5050],i,TC1,putar[5050],j,TC3,TC4; bool x[5050][5050]; bool y[5050][5050]; vector<ll> v[5050]; ll cek(ll aa) { if(a[aa]==1) { if(b[aa]&&cic[aa]) return 1; if(nx[aa]) return cek(aa+1); return 0; } else { if(b[aa]==0&&cic[aa]) return 0; if(nx[aa]) return cek(aa+1); return 1; } } void dfs(ll aa,ll bb) { // if(putar[aa]) // return ; ll ii; for(ii=0;ii<v[bb].size();ii++) if(!x[aa][v[bb][ii]]) { if(v[bb][ii]==aa) { if(b[aa]) putar[aa]=1; // return ; } x[aa][v[bb][ii]]=1; dfs(aa,v[bb][ii]); } } void dfs2(ll aa,ll bb) { // if(putar[aa]) // return ; ll ii; for(ii=0;ii<v[bb].size();ii++) if(!x[aa][v[bb][ii]]) { x[aa][v[bb][ii]]=1; dfs2(aa,v[bb][ii]); } } void dfs3(ll aa,ll bb) { // if(putar[aa]) // return ; if(b[aa])return ; ll ii; for(ii=0;ii<v[bb].size();ii++) if(!y[aa][v[bb][ii]]&!b[v[bb][ii]]) { if(aa==v[bb][ii]) putar[aa]=1; y[aa][v[bb][ii]]=1; dfs3(aa,v[bb][ii]); } } std::vector<int> who_wins(std::vector<int> A, std::vector<int> r, std::vector<int> U, std::vector<int> V) { m=U.size(); n=A.size(); TC3=1; for(i=0;i<n;i++)a[i]=A[i]; for(i=0;i<n;i++)if(!a[i])TC3=0; for(i=0;i<n;i++)b[i]=r[i]; TC1=1; for(i=0;i<m;i++) { if(U[i]==V[i]) cic[U[i]]=1; else if(U[i]+1==V[i]) nx[U[i]]=1; else TC1=0; v[U[i]].pb(V[i]); //v[V[i]].pb(U[i]); } std::vector<int> res(n); if(TC1) { for(int i = 0; i < n; i++) res[i] = cek(i); } else if(TC3) { for(i=0;i<n;i++) { //if(b[i]) dfs(i,i); } for(i=0;i<n;i++) res[i]=0; for(i=0;i<n;i++) for(j=0;j<n;j++) if(x[i][j]&&putar[j]) { res[i]=1; break; } } else { for(i=0;i<n;i++) { //if(b[i]) dfs2(i,i); dfs3(i,i); } for(i=0;i<n;i++) res[i]=1; for(i=0;i<n;i++) for(j=0;j<n;j++) if(x[i][j]&&putar[j]) { res[i]=0; break; } } return res; }

Compilation message (stderr)

train.cpp: In function 'void dfs(ll, ll)':
train.cpp:37:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(ii=0;ii<v[bb].size();ii++)
           ~~^~~~~~~~~~~~~
train.cpp: In function 'void dfs2(ll, ll)':
train.cpp:55:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(ii=0;ii<v[bb].size();ii++)
           ~~^~~~~~~~~~~~~
train.cpp: In function 'void dfs3(ll, ll)':
train.cpp:68:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(ii=0;ii<v[bb].size();ii++)
           ~~^~~~~~~~~~~~~
#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...