Pagini recente »
2014-01-28-test-78
|
Statistici Ionut Constantinescu (ionutz28)
|
Rating Ciurea Marius Gabriel (cmarius46)
|
Profil PetruApostol
|
Cod sursă (job #646324)
Cod sursă (job
#646324)
#include <bits/stdc++.h>
#include <fstream>
#define NMAX 200000
using namespace std;
ifstream fin("pointeri.in");
ofstream fout("pointeri.out");
int l[NMAX], r[NMAX], newL[NMAX], newR[NMAX];
int main()
{
int n, first;
stack <int> st;
fin >> n >> first;
for (int i = 0; i < n; ++i) fin >> l[i];
for (int i = 0; i < n; ++i) fin >> r[i];
int node = first, prev = -1, prim;
while (node != -1 || !st.empty()) {
if (node != -1) {
st.push(node);
node = l[node];
}
else {
node = st.top(), st.pop();
if (prev != -1) newR[prev] = node;
else prim = node;
newL[node] = prev;
prev = node;
node = r[node];
}
}
newR[prev] = -1;
fout << prim << '\n';
for (int i = 0; i < n; ++i) fout << newL[i] << " ";
fout << '\n';
for (int i = 0; i < n; ++i) fout << newR[i] << " ";
fin.close();
fout.close();
return 0;
}