pat甲级 1021. Deepest Root(bfs求连通分量)
来源:互联网 发布:阿里云 香港 速度 编辑:程序博客网 时间:2024/06/02 09:30
题目内容
具体题目见https://www.patest.cn/contests/pat-a-practise/1021
分析内容
1.判断连通分量的个数,可以用dfs,可以用并查集,也可以用bfs
2.为什么选择bfs,因为题目中要求转化成树,并且求出树最大层次的根节点,这需要用到层次遍历,因此bfs更好。因为bfs自身就用到队列。
3.对每个节点进行一个bfs,才能求出这个节点对应的层次。
代码内容
#include <iostream>#include <vector>#include <queue>/* run this program using the console pauser or add your own getch, system("pause") or input loop */using namespace std;const int NUM = 10000+5;bool visited[NUM]={false};int level[NUM]={0},level2[NUM]={0};vector < vector<int> > v(NUM);int bfs(int root){//进行bfs queue<int> q; int now; q.push(root); visited[root]=true; int ceng = 0; while(!q.empty()){ int size = q.size(); ceng++; for(int j=0;j<size;j++){ now = q.front(); q.pop(); for(int i=0;i<v[now].size();i++){ int t = v[now][i]; if(visited[t]==false){ visited[t] = true; q.push(t); } } } } return ceng;}int main(int argc, char *argv[]) { int n,count=0; cin>>n; for(int i=0;i<n-1;i++){//构建图的邻接表 int x,y; cin>>x>>y; v[x].push_back(y); v[y].push_back(x); } for(int i=1;i<=n;i++){//找连通分量 if(visited[i]==false){ bfs(i); count++; } } int i=1; int res[n+1]; if(count>1){ cout<<"Error: "<<count<<" components"<<endl; } else{//求每个节点的层次 int MAX = -1; for(int k=1;k<=n;k++){ for(int j=0;j<NUM;j++){ visited[j]=false; } int t = bfs(k); res[i++]=t; if(MAX<t){ MAX = t; } } for(int j=1;j<=n;j++){//输出最大层次对应的节点编号 if(res[j]==MAX){ cout<<j<<endl; } } } return 0;}
阅读全文
0 0
- pat甲级 1021. Deepest Root(bfs求连通分量)
- PAT 甲级 1021. Deepest Root(dfs:无向图的最远路径、连通分量个数)
- 1021. Deepest Root (25)-PAT甲级真题(图的遍历,dfs,连通分量的个数)
- [PAT-甲级]1021.Deepest Root
- 【PAT甲级】1021. Deepest Root (25)
- PAT甲级练习1021. Deepest Root (25)
- 1021. Deepest Root (25) PAT 甲级
- PAT甲级1021. Deepest Root (25)
- PAT 甲级 1021. Deepest Root (25)
- PAT 甲级1021. Deepest Root (25)
- PAT 甲级 Deepest Root (25)
- PAT甲级练习题A1021. Deepest Root (25)
- PAT 1021. Deepest Root
- PAT 1021. Deepest Root
- pat 1021. Deepest Root
- PAT 1021. Deepest Root
- PAT 1021. Deepest Root
- 【PAT】1021. Deepest Root
- JavaScript 开发者的 10 款必备工具
- SAP Business One (SAP软件)会计师事务所行业ERP成功故事-东审鼎立国际会计师事务所
- QCOM camera AF驱动配置
- 随机算法(上)
- 逾期3.8亿元,酷奇单车竟是高利贷放款资金源头
- pat甲级 1021. Deepest Root(bfs求连通分量)
- Python笔记7——面向对象、类、实例
- Java-Scanner类
- java分布式系统部署学习(一)ansible体验
- jQuery基础二-(DOM篇)
- 使用nifi将数据库数据上传到Elasticsearch
- 《赢》读书摘要03
- Php-mysql的触发器(V客学院知识分享)
- 【知识整理】安卓(Android)应用上传360应用市场步骤详解