Codeforces Round #425 (Div. 2), problem: (D) Misha, Grisha and Underground Solution In C/C++

#include<cstdio>
#include<iostream>
using namespace std;
struct Edge{
int to,next;
}e[202020];
int head[101010],cnt=0;
void add(int u,int v)
{
cnt++;
e[cnt].to=v;
e[cnt].next=head[u];
head[u]=cnt;
}
int anc[20][101010];
int dep[101010];
void dfs(int x,int fa)
{
for(int i=head[x];i!=0;i=e[i].next)
{
int to=e[i].to;
if(to!=fa)
{
dep[to]=dep[x]+1;
anc[0][to]=x;
dfs(to,x);
}
}
}

int lca(int u,int v)
{
if(u==v)
return u;
if(dep[u]<dep[v])
swap(u,v);
for(int i=18;i>=0&&dep[u]!=dep[v];i–)
if(dep[anc[i][u]]>=dep[v])
u=anc[i][u];
if(u==v)
return u;
for(int i=18;i>=0;i–)
if(anc[i][u]!=anc[i][v])
{
u=anc[i][u];
v=anc[i][v];
}
return anc[0][u];
}
int dis(int u,int v)
{
int LCA=lca(u,v);
return dep[u]+dep[v]-dep[LCA]-dep[LCA];
}
int main()
{
int n,q;
scanf(“%d%d”,&n,&q);
for(int i=2;i<=n;i++)
{
int p;
scanf(“%d”,&p);
add(i,p);
add(p,i);
}
anc[0][1]=1;
dep[1]=1;
dfs(1,0);
for(int i=1;i<=18;i++)
for(int j=1;j<=n;j++)
anc[i][j]=anc[i-1][anc[i-1][j]];
while(q–)
{
int s,t,f;
scanf(“%d%d%d”,&s,&t,&f);
int mid=1;
int might;
might=lca(s,t);
if(dep[might]>dep[mid])
mid=might;
might=lca(s,f);
if(dep[might]>dep[mid])
mid=might;
might=lca(t,f);
if(dep[might]>dep[mid])
mid=might;
int ans=0;
ans=max(dis(mid,s),max(dis(mid,t),dis(mid,f)));
printf(“%d\n”,ans+1);
}
return 0;
}

Advertisement

spot_img

The Ultimate Viral Kitchen...

📢 As an Amazon Associate, I earn from qualifying...

Connor Hellebuyck goes to...

Professional sports can be an emotional rollercoaster, and few...

Why Viral Kitchen Gadgets...

em> If you had told me six months ago that...

Why Viral Kitchen Gadgets...

em> I stumbled across this while desperately trying to fix...

Microsoft-Backed Space and Time...

In an era where enterprise adoption of autonomous workflows...

The Real Truth About...

em> I stumbled across this while desperately trying to fix...

The Ultimate Viral Kitchen Gadgets Guide You Didnt Know You Needed

📢 As an Amazon Associate, I earn from qualifying purchases.Most products in this category disappoint within weeks. Cheap materials, vague instructions, and results that...

Connor Hellebuyck goes to Bass Pro Shops opening in NJ — one day after brutal Winnipeg booing

Professional sports can be an emotional rollercoaster, and few understand that reality better this week than Winnipeg Jets star goaltender Connor Hellebuyck. Just twenty-four...

Why Viral Kitchen Gadgets Is Currently Breaking the Internet

em> If you had told me six months ago that a single purchase would change how I approach my daily routine, I would not have...

Why Viral Kitchen Gadgets Is Currently Breaking the Internet

em> I stumbled across this while desperately trying to fix a recurring problem in my routine. The Viral Kitchen Gadgets was not even on my...

Microsoft-Backed Space and Time Launches Platform for AI Verification of Private Data

In an era where enterprise adoption of autonomous workflows is accelerating rapidly, data confidentiality remains one of the largest hurdles preventing organizations from unlocking...

The Real Truth About Viral Kitchen Gadgets Before You Buy

em> I stumbled across this while desperately trying to fix a recurring problem in my routine. The Viral Kitchen Gadgets was not even on my...

How Viral Kitchen Gadgets Is Quietly Changing the Game

em> If you had told me six months ago that a single purchase would change how I approach my daily routine, I would not have...

Japanese bowling pioneer Ritsuko Nakayama, first woman to bowl professional perfect game, dies at 84

The sports world is mourning the loss of a true trailblazer. Ritsuko Nakayama, the pioneering Japanese athlete who made history as the first woman...

I Tried Viral Kitchen Gadgets For 30 Days Here Is the Honest Truth

em> There comes a point when you realise that tolerating a frustrating situation is costing you more than just fixing it properly. That was the...