树—— 找树根和孩子

it2022-05-05  175

题目描述

给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子

 

输入

第一行:n(结点数<=100),m(边数<=200)。      以下m行;每行两个结点x和y,表示y是x的孩子(x,y<=1000)。 

 

输出

第一行:树根:root。  第二行:孩子最多的结点max。  第三行:max的孩子。

 

样例输入

8 7 4 1 4 2 1 3 1 5 2 6 2 7 2 8

 

样例输出

4 2 6 7 8

 这道题还是不难的,基本上只要思路正确,不用写多长时间。

#include<bits/stdc++.h> using namespace std; int m,n,a[1000],b[1000],num[10000],ant=0,u,k,l,x,y,maxx=0; int main() { // freopen("找树根和孩子.in","r",stdin); //freopen("找树根和孩子.out","w",stdout); cin>>n>>m; for(int i=1;i<=m;i++) { cin>>x>>y; a[y]=x; } for(int i=1;i<=n;i++) { if(a[i]==0) { u=i; break; } } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(a[j]==i) { ant++; } } if(ant>maxx) { maxx=ant; l=i; } ant=0; } cout<<u<<"\n"; cout<<l<<"\n"; for(int i=1;i<=n;i++) { if(a[i]==l) cout<<i<<" "; } return 0; }

 

转载于:https://www.cnblogs.com/5t2y0/p/9558865.html


最新回复(0)