Cod sursă (job #341710)

Utilizator avatar amarghescu Anton Marghescu amarghescu IP ascuns
Problemă Pointeri Compilator cpp | 0,63 kb
Rundă Arhiva de probleme Status evaluat
Dată 20 ian. 2018 23:07:57 Scor 100
#include<cstdio>
struct pointeri{
int l,r;
}v[200005];
int unod,ok=0,node;
int dfs(int nod){
if (v[nod].l!=-1)
dfs(v[nod].l);
if (ok==0)
node=nod,ok=1;
v[nod].l=unod;
unod=nod;
if (v[nod].r!=-1)
dfs(v[nod].r);}
int main(){
freopen("pointeri.in","r",stdin);
freopen("pointeri.out","w",stdout);
int n,rad,i;
scanf("%d%d",&n,&rad);
for(i=0;i<n;i++)
scanf("%d",&v[i].l);
for(i=0;i<n;i++)
scanf("%d",&v[i].r);
dfs(rad);
printf("%d\n",node);
for(i=0;i<n;i++)
if (i!=node)
v[v[i].l].r=i;
v[node].l=-1;
v[unod].r=-1;
for(i=0;i<n;i++)
printf("%d ",v[i].l);
printf("\n");
for(i=0;i<n;i++)
printf("%d ",v[i].r);
return 0;}