Pagini recente »
Monitorul de evaluare
|
Monitorul de evaluare
|
Cod sursă (job #403482)
|
Borderou de evaluare (job #208049)
|
Cod sursă (job #76959)
Cod sursă (job
#76959)
#include <stdio.h>
using namespace std;
struct lista
{
int st;
int dr;
};
const int N=200000;
lista v[N];
void Act(int nod)
{
int nodst=v[nod].st,noddr=v[nod].dr,i;
//stanga
if(nodst!=-1)
{
Act(nodst);
i=nodst;
while(v[i].dr!=-1)
i=v[i].dr;
v[i].dr=nod;
v[nod].st=i;
}
//dreapta
if(noddr!=-1)
{
Act(noddr);
i=noddr;
while(v[i].st!=-1)
i=v[i].st;
v[i].st=nod;
v[nod].dr=i;
}
}
int main()
{
FILE *in,*out;
in=fopen("pointeri.in","r");
out=fopen("pointeri.out","w");
int n,rad,i;
fscanf(in,"%d%d",&n,&rad);
for(i=0;i<n;i++)
fscanf(in,"%d",&v[i].st);
for(i=0;i<n;i++)
fscanf(in,"%d",&v[i].dr);
Act(rad);
i=0;
while(v[i].st!=-1)
i++;
fprintf(out,"%d\n",i);
for(i=0;i<n;i++)
{
fprintf(out,"%d",v[i].st);
if(i!=n-1)
fprintf(out," ");
}
fprintf(out,"\n");
for(i=0;i<n;i++)
{
fprintf(out,"%d",v[i].dr);
if(i!=n-1)
fprintf(out," ");
}
return 0;
}