1 solutions

  • 0
    @ 2024-10-23 15:32:56

    算法描述

    使用tree[i]=jtree[i]=j 表示jjii的父亲,然后统计每个节点的孩子节点数目

    代码实现

    #include<bits/stdc++.h>
    using namespace std;
    const int N=2010;
    int tree[N];
    int main()
    {
    	int n,m;
    	cin>>n>>m;
    	for(int i=1;i<=m;i++)
    	{
    		int x,y;
    		cin>>x>>y;
    		tree[y]=x; //记录y的父亲 
    	}
    	int r;
    	for(int i=1;i<=n;i++)
    		if(tree[i]==0) //没有父亲节点 
    			r=i; //记录根节点 
    	cout<<r<<endl;
    	int maxv=-1,id; 
    	for(int i=1;i<=n;i++) //枚举当前的父亲节点 
    	{
    		int s=0;
    		for(int j=1;j<=n;j++) //枚举i的孩子节点 
    			if(tree[j]==i)
    				s++; //统计孩子数目 
    		if(s>maxv) //更新最大值所在的位置 
    		{
    			maxv=s,id=i;
    		}
    	}
    	cout<<id<<endl;
    	for(int i=1;i<=n;i++) 
    		if(tree[i]==id)
    			cout<<i<<" ";
    	return 0;
    }
    
    • 1

    Information

    ID
    1022
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    5
    Tags
    # Submissions
    4
    Accepted
    2
    Uploaded By