Pagini recente »
Monitorul de evaluare
|
Monitorul de evaluare
|
Monitorul de evaluare
|
Istoria paginii utilizator/velciu_ilinca
|
Cod sursă (job #146148)
Cod sursă (job
#146148)
#include <cstdio>
using namespace std;
FILE *fin = fopen("pointeri.in", "r");
FILE *fout = fopen("pointeri.out", "w");
int N, rad, st[200001], dr[200001];
int prim = -1, ultim = -1;
void parcurgere(int x)
{
int aux;
if(st[x] != -1)
parcurgere(st[x]);
aux = dr[x];
if(prim == -1)
prim = x;
else
{
st[x] = ultim;
dr[ultim] = x;
}
dr[x] = -1;
ultim = x;
if(aux != -1)
parcurgere(aux);
}
void citire()
{
fscanf(fin, "%d%d", &N, &rad);
for(int i = 0; i < N; i++)
fscanf(fin, "%d", &st[i]);
for(int i = 0; i < N; i++)
fscanf(fin, "%d", &dr[i]);
}
void afisare()
{
fprintf(fout, "%d\n", prim);
for(int i = 0; i < N; i++)
fprintf(fout, "%d ", st[i]);
fprintf(fout, "\n");
for(int i = 0; i < N; i++)
fprintf(fout, "%d ", dr[i]);
}
int main()
{
citire();
parcurgere(rad);
afisare();
return 0;
}