#include "stations.h"
#include <bits/stdc++.h>
using namespace std;
#define MAXN 1000
int nch[MAXN],sl[MAXN];
vector<int> vv[MAXN];
int sz[MAXN];
void clcsz(int x, int par)
{
sz[x]=1;
for (int q=0;q<vv[x].size();q++)
{
if (vv[x][q]==par) continue;
clcsz(vv[x][q],x);
sz[x]+=sz[ vv[x][q] ];
}
}
void dfs(int x, int par, int lr, int rr, int dl)
{
sl[x]=dl;
if (dl==0)
{
nch[x]=lr;
lr++;
}
else
{
nch[x]=rr;
rr--;
}
int curl=lr;
for (int q=0;q<vv[x].size();q++)
{
if (vv[x][q]==par) continue;
dfs(vv[x][q],x,curl,curl+sz[ vv[x][q] ]-1,1-dl);
curl+=sz[ vv[x][q] ];
}
}
vector<int> label(int n, int k, vector<int> u, vector<int> v) {
for (int q=0;q<n;q++) vv[q].clear();
for (int i = 0; i < n-1; i++) {
vv[ u[i] ].push_back(v[i]);
vv[ v[i] ].push_back(u[i]);
}
clcsz(0,-1);
dfs(0,-1,0,n-1,0);
vector<int> labels(n);
for (int q=0;q<n;q++)
{
labels[q]=sl[q]*1000+nch[q];
//cout<<labels[q]<<" ";
}
//cout<<"\n";
return labels;
}
int find_next_station(int s, int t, vector<int> c) {
if (s==0)
{
///tuk nqma roditel i e malko stranna situaciq, zatova she go resha otdelno
int lst=1;
int tt=t%1000;
for (int q=0;q<c.size();q++)
{
int curl=lst;
int curr=c[q]%1000;
//cout<<curl<<" "<<curr<<" "<<tt<<"\n";
if (tt>=curl && tt<=curr) return c[q];
lst=c[q]%1000+1;
}
//cout<<"nuleva zaqvka\n";
}
///dai da namerim roditelq
int prr=-1;
if (s>=1000)
{
prr=0;
}
else
{
prr=c.size()-1;
}
///dai da namerim rangea
int lr=-1,rr=-1;
if (s>=1000)
{
rr=s%1000;
if (c.size()==1) lr=s%1000; ///listo
else lr=c[1];
}
else
{
lr=s;
if (c.size()==1) rr=s; ///listo
else rr=c[ c.size()-2 ];
}
//cout<<"range e "<<lr<<" "<<rr<<" "<<" a tati e "<<c[prr]<<"\n";
int tt=t%1000;
if (tt<lr || tt>rr) return c[prr]; ///otivame kym tati
if (s>=1000)
{
int lst=rr-1;
for (int q=c.size()-1;q>=1;q--)
{
int curl=c[q];
int curr=lst;
if (tt>=curl && tt<=curr) return c[q];
lst=c[q]-1;
}
}
else
{
int lst=lr+1;
for (int q=0;q<c.size()-1;q++)
{
int curl=lst;
int curr=c[q]%1000;
if (tt>=curl && tt<=curr) return c[q];
lst=c[q]%1000+1;
}
}
///return c[0];
}
Compilation message (stderr)
stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:124:1: warning: control reaches end of non-void function [-Wreturn-type]
124 | }
| ^
# | 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... |