找树根和孩子
•【例3-1】找树根和孩子
【问题描述】
给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子
【输入格式】
第一行:n(结点数<=100),m(边数<=200)。
以下m行;每行两个结点x和y,
表示y是x的孩子(x,y<=1000)。
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int tree[101]; int main() { int n,_,m,x,y,root,maxroot,sum=0,Max=0; cin>>n>>m; for(int i=1;i<=m;i++) { cin>>x>>y; tree[y]=x; } for(int i=1;i<=m;i++) { if(tree[i]==0) { root=i; break; } } for(int i=1;i<=n;i++) { sum=0; for(int j=1;j<=n;j++) { if(tree[j]==i) sum++; } if(sum>Max) { Max=sum; maxroot=i; } } cout<<root<<endl<<maxroot<<endl; for(int i=1;i<=n;i++) { if(tree[i]==maxroot) printf("%d ",i); } return 0; }
【输出格式】
第一行:树根:root。
第二行:孩子最多的结点max。
第三行:max的孩子。