Submission #305367

#TimeUsernameProblemLanguageResultExecution timeMemory
305367daniel920712Stations (IOI20_stations)C++14
16 / 100
1021 ms1296 KiB
#include "stations.h" #include <vector> #include <math.h> #include <iostream> #include <stdio.h> using namespace std; vector < int > Next[1005]; int con[1005]={0}; int ans[1005]={0}; bool use[1005]={0}; int st; void F(int here,int con,int t) { //printf("%d %d\n",here,con); int now=0; ans[here]=con; use[here]=1; for(auto i:Next[here]) { if(!use[i]) { now++; if(st==here) F(i,now,t); else F(i,con+t,t); } } } vector<int> label(int n, int k, vector<int> u, vector<int> v) { //printf("aa\n"); vector<int> labels; int i; for(i=0;i<n;i++) { labels.push_back(0); Next[i].clear(); con[i]=0; use[i]=0; } for(int i=0;i<n-1;i++) { con[u[i]]++; con[v[i]]++; Next[u[i]].push_back(v[i]); Next[v[i]].push_back(u[i]); } for(i=0;i<n;i++) { if(con[i]>2) { st=i; F(i,0,con[i]); break; } } if(i==n) { st=0; F(0,0,con[0]); } for(i=0;i<n;i++) labels[i]=ans[i]; return labels; } int find_next_station(int s, int t, vector<int> c) { int x; if(t==0) return c[0]; if(s==0) { if(t%c.size()==0) return c.size(); return t%c.size(); } if(c.size()==1) return c[0]; x=abs(s-c[1]); if(s%x==t%x) { if(s<t) return c[1]; else return c[0]; } else return c[0]; }
#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...