Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

#include <iostream>

using namespace std;

int t[101],viz[101],viz1[101],viz2[101];

int n,cnt;

char s[10][10];

void dfs(int x,int &cnt){

for(int i=1;i<=n;i++){

if(viz[i]==0 && t[i]==x){

viz[i]=1;

cnt++;

dfs(i,cnt);

void dfs1(int x,int *v){

for(int i=1;i<=n;i++){

if(v[i]==0 && t[x]==i){

v[i]=1;

dfs1(i,v);

int main()

cin>>n;

for(int i=1;i<=n;i++){

cin>>t[i];

}
for(int i=1;i<=n;i++){

cin>>s[i];

for(int i=1;i<=n;i++){

for(int j=1;j<=n;j++){

if(t[j]==i){

cout<<s[j]<<" "; /// nume fii directi

cnt=0;

for(int t=1;t<=n;t++) viz[t]=0;

dfs(j,cnt);

cout<<cnt<<" "; /// nr descendenti fiecare fiu

cout<<endl;

int a,b;

cin>>a>>b;

for(int j=1;j<=n;j++) viz1[j]=0;

dfs1(a,viz1);

for(int j=1;j<=n;j++) viz2[j]=0;

dfs1(b,viz2);

for(int i=n;i>=1;i--){

if(viz1[i]==viz2[i] && viz1[i]!=0){

cout<<i; /// stramos comun cel mai apropiat

break;

return 0;
}

You might also like