尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

PAT树的深度优先搜索(dfs)和广度优先搜索(bfs)

PAT树的深度优先搜索(dfs)和广度优先搜索(bfs)
📅 发布时间:2026/7/28 16:35:33

dfs和bfs都是常用的搜索算法,结合PAT1094,简单动手分别以dfs和bfs实现树的遍历吧。

1094 The Largest Generation (25 分)

A family hierarchy is usually presented by a pedigree tree where all the nodes on the same level belong to the same generation. Your task is to find the generation with the largest population.

Input Specification:

Each input file contains one test case. Each case starts with two positive integers N (<100) which is the total number of family members in the tree (and hence assume that all the members are numbered from 01 to N), and M (<N) which is the number of family members who have children. Then M lines follow, each contains the information of a family member in the following format:

ID K ID[1] ID[2] ... ID[K]

whereIDis a two-digit number representing a family member,K(>0) is the number of his/her children, followed by a sequence of two-digitID's of his/her children. For the sake of simplicity, let us fix the rootIDto be01. All the numbers in a line are separated by a space.

Output Specification:

For each test case, print in one line the largest population number and the level of the corresponding generation. It is assumed that such a generation is unique, and the root level is defined to be 1.

Sample Input:

23 13 21 1 23 01 4 03 02 04 05 03 3 06 07 08 06 2 12 13 13 1 21 08 2 15 16 02 2 09 10 11 2 19 20 17 1 22 05 1 11 07 1 14 09 1 17 10 1 18

Sample Output:

9 4

题目大意:给你一棵树,让你找出哪一层的节点个数最多,输出节点个数和对应的层数。

dfs:

#include<cstdio> #include<iostream> #include<vector> const int maxn=105; vector<int> tree[maxn]; int sum[maxn];//记录每一层的节点个数 int n,m; void dfs(int level,int node){ sum[level]++; for(int i=0;i<tree[node].size();i++){ dfs(level+1,tree[node][i]); } } int main() { cin>>n>>m; for(int i=0;i<m;i++){ int id,num; cin>>id>>num; for(int j=0;j<num;j++){ int child; cin>>child; tree[id].push_back(child); } } dfs(1,1); int maxnum=-1,maxlevel=-1; for(int i=0;i<maxn;i++){ if(sum[i]>maxnum){ maxnum=sum[i]; maxlevel=i; } } cout<<maxnum<<" "<<maxlevel<<endl; return 0; }

bfs

#include<cstdio> #include<iostream> #include<vector> #include<queue> using namespace std; const int maxn=105; vector<int> tree[maxn]; int sum[maxn]; int level[maxn]; //记录节点对应的层数 int n,m; void bfs(){ queue<int> q; q.push(1); level[1]=1; while(!q.empty()){ int node=q.front(); q.pop(); sum[level[node]]++; for(int i=0;i<tree[node].size();i++){ level[tree[node][i]]=level[node]+1; q.push(tree[node][i]); } } } int main() { cin>>n>>m; for(int i=0;i<m;i++){ int id,num; cin>>id>>num; for(int j=0;j<num;j++){ int child; cin>>child; tree[id].push_back(child); } } bfs(); int maxnum=-1,maxlevel=-1; for(int i=0;i<maxn;i++){ if(sum[i]>maxnum){ maxnum=sum[i]; maxlevel=i; } } cout<<maxnum<<" "<<maxlevel<<endl; return 0; }

相关新闻

  • Windows 10运行Android应用终极指南:WSA-Windows-10逆向移植项目详解
  • 杭州西湖区漏水检测维修一站式服务 - 本地正规防水补漏公司精选推荐(2026 最新)全域上门:卫生间 / 厨房 / 阳台 / 屋顶渗漏水免砸砖检测维修补漏全攻略 - 吉林同城获客
  • Google发布网络安全报告 工具堆够用了吗

最新新闻

  • 计算复杂性-2
  • Godot 4 CharacterBody2D 角色移动:输入、碰撞与八方向控制实战
  • 长鑫科技超3万亿市值登科创板,创始人分367.5亿股权,合肥国资成最大赢家
  • 好用的国外云服务器TOP6推荐排行榜,性能真的非常夯 国外云服务器应该怎么选? - 科技先行者
  • AI短剧创作系统:源码交付与全流程自动化实践
  • EncodingChecker:3步解决文件乱码问题的终极指南

日新闻

  • 力旷智能:伺服驱动系统在制药收瓶设备中的应用解析
  • 2026 网安入门避坑指南,零基础如何避开无效学习直接上手实战
  • 揭秘CFC项目:如何通过手机摄像头实现850kbps无网络文件传输

周新闻

  • 大连理工大学与东京大学联手打造的“主动型AI助手“
  • 170.2026年国家级科研瓶颈:超精密单点金刚石切削(SPDT)光学表面生成
  • SongBloom:革命性歌曲生成框架深度解析——如何通过交织自回归与扩散模型创作完整音乐

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号