Cod sursă (job #514503)

Utilizator avatar AndreiVianu Andrei Ionita AndreiVianu IP ascuns
Problemă Pointeri Compilator cpp | 0.80 kb
Rundă Arhiva de probleme Status evaluat
Dată 20 dec. 2019 19:23:42 Scor 100
#include <fstream>

using namespace std;

int st[200000],dr[200000];

ifstream in ("pointeri.in");
ofstream out ("pointeri.out");

void constr(int node,int *first,int *last)
{
  int ff,ll;
  if (st[node]!=-1)
  {
    constr(st[node],&ff,&ll);
    dr[ll]=node;
    st[node]=ll;
    *first=ff;
  }
  else
    *first=node;
  if (dr[node]!=-1)
  {
    constr(dr[node],&ff,&ll);
    st[ff]=node;
    dr[node]=ff;
    *last=ll;
  }
  else
    *last=node;
}

int main()
{
    int n,i,rad,first,last;
    in>>n>>rad;
    for (i=0;i<n;i++)
        in>>st[i];
    for (i=0;i<n;i++)
        in>>dr[i];
    constr(rad,&first,&last);
    out<<first<<'\n';
    for (i=0;i<n;i++)
        out<<st[i]<<" ";
    out<<'\n';
    for (i=0;i<n;i++)
        out<<dr[i]<<" ";
    return 0;
}