This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |