# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1057481 | Piokemon | City (JOI17_city) | C++17 | 0 ms | 0 KiB |
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 "Encoder.h"
#include <bits/stdc++.h>
using namespace std;
constexpr ll N = 25e4;
vector<ll> graf[N+9];
ll pre[N+9];
ll post[N+9];
ll tajm=1;
ll n;
void dfs(ll v, ll par){
pre[v]=tajm++;
for (ll x:graf[v]){
if (x!=par)dfs(x,v);
}
ll rozn=tajm-pre[v];
ll temp=1;
while(temp<rozn)temp*=2;
tajm=pre[v]+temp;
post[v]=tajm;
}
void Encode(ll n_, ll A[], ll B[]){
n=n_;
for (ll i = 1; i < n; ++i) {
graf[A[i-1]].push_back(B[i-1]);
graf[B[i-1]].push_back(A[i-1]);
}
dfs(0,-1);
ll stala=60;
for (ll x=0;x<n;x++){
//cerr << pre[x] << ' ' << post[x] << '\n';
Code(x,stala*pre[x]+__lg(post[x]-pre[x]));
}
}
#include "Device.h"
#include <bits/stdc++.h>
using namespace std;
constexpr ll stala = 60;
void InitDevice(){
//uwu
}
ll Answer(long long S, long long T){
ll pres,is,pret,it;
pres=S/stala; is=S%stala;
pret=T/stala; it=T%stala;
ll posts,postt;
posts=pres+(1<<is);
postt=pret+(1<<it);
if (pres<=pret && postt<=posts)return 1;
if (pret<=pres && posts<=postt)return 0;
return 2;
}