找树根和孩子

•【例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的孩子。
posted @ 2017-03-29 15:51  zzzzx  阅读(361)  评论(0编辑  收藏  举报