|
#include<bits/stdc++.h>
using namespace std;
struct Snode{
char data;
vector<int> children;
};
int dfs(Snode nodes[11],int head){
vector<int> children=nodes[head].children;
if(children.size()==0){
return 1;
}
int maxsize=-1;
for(int i=0;i<children.size();i++){
maxsize=max(maxsize,dfs(nodes,children[i]));
}
return maxsize+1;
}
int main(){
Snode nodes[11]={
{},
{'H',{2,3,4}},
{'e',{5,6}},
{'o',vector<int>()},
{'W',{7}},
{'l',vector<int>()},
{'l',vector<int>()},
{'o',{8,9,10}},
{'r',vector<int>()},
{'l',vector<int>()},
{'d',vector<int>()},
};
fill(parent,parent+11,-1);
for(int i=1;i<=10;i++){
vector<int>children=nodes[i].children;
for(int j=0;j<children.size();j++){
parent[children[j]]=i;
}
degree[i]=children.size();
}
for(int i=1;i<=10;i++){
if(parent[i]==-1){
head=i;
}
}
printf("%c\n",nodes[head].data);
for(int i=1;i<=10;i++){
printf("%d ",degree[i]);
}
cout<<"\n";
printf("%d\n",dfs(nodes,head));
return 0;
}
|
|