Pagini recente »
Atașamentele paginii Clasament 2024-11-26-clasa-6-tema-18
|
Monitorul de evaluare
|
Cod sursă (job #470970)
|
Cod sursă (job #660303)
|
Cod sursă (job #582156)
Cod sursă (job
#582156)
#include <iostream>
#include <stdio.h>
using namespace std;
const int NMAX = 200000, HMAX = 1000;
int st[NMAX], dr[NMAX];
int ord[NMAX + 2], op = 1;
void dfs(int ptr);
int main()
{
int n, i, rad;
FILE *fin = fopen("pointeri.in", "r");
fscanf(fin, "%d%d", &n, &rad);
for (i = 0; i < n; i++)
fscanf(fin, "%d", &st[i]);
for (i = 0; i < n; i++)
fscanf(fin, "%d", &dr[i]);
fclose(fin);
dfs(rad);
ord[0] = -1;
ord[n + 1] = -1;
for (i = 1; i <= n; i++)
{
st[ord[i]] = ord[i - 1];
dr[ord[i]] = ord[i + 1];
}
FILE *fout = fopen("pointeri.out", "w");
fprintf(fout, "%d\n", ord[1]);
for (i = 0; i < n; i++)
fprintf(fout, "%d ", st[i]);
fprintf(fout, "\n");
for (i = 0; i < n; i++)
fprintf(fout, "%d ", dr[i]);
fclose(fout);
return 0;
}
void dfs(int ptr)
{
if (ptr == -1)
return;
dfs(st[ptr]);
ord[op++] = ptr;
dfs(dr[ptr]);
}