Codeforces Round #381 (Div. 1), problem: (B) Alyona and a tree Solution in C/C++

Hi guys , I just solved the second problem of round 381 , Hope you like it , feel free to comment any better solution .

#include<stdio.h>
#include<stdlib.h>
typedef long long unsigned llu;
typedef unsigned u;
u P[19][222222],S[222222],R[222222],A[222222];
u *G[222222],Ga[222222],Gi[222222];
llu W[19][222222];
void add(u i,u j)
{
if(Ga[i]==Gi[i])
{
if(!Ga[i])G[i]=(u*)calloc(Ga[i]=1,sizeof(u));
else G[i]=(u*)realloc(G[i],(Ga[i]<<=1)*sizeof(u));
}
G[i][Gi[i]++]=j;
return;
}
u F(u n)
{
u i,j=0;
for(i=Gi[n];i–;)j+=F(G[n][i]);
return R[n]=j+1-S[n];
}
int main()
{
u n,i=0,j,k,l;
for(scanf(“%u”,&n);++i<=n;)scanf(“%u”,A+i);
for(k=1;++k<=n;)
{
scanf(“%u%u”,&i,&j);
add(i,k);
W[0][k]=j;
P[0][k]=i;
}
W[0][1]=0;
P[0][1]=1;
for(i=0;++i<19;)for(j=0;++j<=n;)
{
P[i][j]=P[i-1][P[i-1][j]];
W[i][j]=W[i-1][j]+W[i-1][P[i-1][j]];
}
for(i=0;++i<=n;)
{
k=A[l=i];
while(l!=1&&W[0][l]<=k)
{
for(j=19;W[–j][l]>k;);
k-=W[j][l];l=P[j][l];
}
++S[l>1?P[0][l]:0];
}
F(1);
for(i=0;++i<=n;)printf(“%u “,R[i]-1);
return 0;
}

Advertisement

spot_img

How Viral Kitchen Gadgets...

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

Avengers: Armageddon #5 Preview:...

Tension Reaches a Breaking Point in Avengers: Armageddon #5 Marvel's...

7 Reasons This Viral...

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

Can baby deer walk...

Witnessing a newborn animal take its very first steps...

Is the Anker MagGo...

The Long-Term Durability Assessment: 6 Months as a Daily...

Anker MagGo 3-in-1 vs...

The Heavyweight Showdown: Anker MagGo vs. Belkin BoostCharge Pro For...

How Viral Kitchen Gadgets Is Quietly Changing the Game

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

Avengers: Armageddon #5 Preview: Trust Issues Intensify

Tension Reaches a Breaking Point in Avengers: Armageddon #5 Marvel's mightiest heroes are once again staring down total catastrophe, but this time, the greatest danger...

7 Reasons This Viral Kitchen Gadgets Is Worth Every Single Penny

📢 As an Amazon Associate, I earn from qualifying purchases.I stumbled across this while desperately trying to fix a recurring problem in my routine....

Can baby deer walk right away?

Witnessing a newborn animal take its very first steps is one of the most heartwarming sights in the natural world. In the wild, however,...

Is the Anker MagGo 3-in-1 Worth $100? Long-Term Durability Review

The Long-Term Durability Assessment: 6 Months as a Daily Driver Spending $100 on a smartphone charging accessory is a significant consumer investment. When budget 3-in-1...

Anker MagGo 3-in-1 vs Belkin BoostCharge Pro 3-in-1: Which Is Better?

The Heavyweight Showdown: Anker MagGo vs. Belkin BoostCharge Pro For the past four years, if an Apple user wanted the absolute best 3-in-1 wireless charging...

Best Protective Travel Pouches and Cases for Anker MagGo 3-in-1

Protecting Your Premium Travel Power Investment The Anker MagGo 3-in-1 Foldable Charging Station is engineered for life on the move. With its collapsible form factor,...

How Fast Does Anker MagGo Charge iPhone 15 and 16 from 0 to 100%?

Putting Qi2 15W Speed Claims to the Test When wireless charging standards make technological leaps, consumer skepticism is natural. For years, marketing promises of "fast...

Does the Anker MagGo 3-in-1 Come with a 40W USB-C Power Brick and Cable?

The Hidden Cost of Wireless Chargers: What’s Really in the Box? In modern consumer electronics packaging, a frustrating cost-cutting trend has become commonplace: the omitted...