1488 数据结构实验:连通分量个数
来源:互联网 发布:客户满意率的数据来源 编辑:程序博客网 时间:2024/06/04 19:06
数据结构实验:连通分量个数
#include<iostream> #include<cstring> using namespace std; int pre[1000]; int m,n,u,v; int find(int x)//查找r的根节点 { int r=x; while(pre[r]!=r)//查找r的上一级,就是根节点,并不是r本身 r=pre[r];//就接着找r的上一级 int i=x,j; while(i!=r) { j=pre[i]; pre[i]=r; i=j; } return r; } void join(int x,int y) { int fx=find(x);//通过find这个函数找到他们的根节点 int fy=find(y); if(fx!=fy) //如果不是一个上级 pre[fx]=fy; //那么就把fx的根节点设为fy,连通起来两个分支,分支总数少了,需要建立的路也就少了 } int main() { int t; cin>>t; while(t--) { memset(pre,0,sizeof(pre)); cin>>n>>m;//代表n个顶点和m条边 for(int i=1;i<=n;i++) pre[i]=i;//每个点都相互独立,每个点的上级都是自己 for(int i=0;i<m;i++) { cin>>u>>v;//输入联通的边,建立各点之间的联系 join(u,v);//如果不是 } int ant=0; for(int i=1;i<=n;i++) if(pre[i]==i) //最后开始遍历所有的点,点的上级是他本身的证明没有被联通,需要建路 ant++;//数量+1 cout<<ant<<endl; } return 0; }
0 0
- SDUT 1488 数据结构实验:连通分量个数
- 1488 数据结构实验:连通分量个数
- SDUT 1488 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数1488
- SDUT-1488-数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 数据结构实验:连通分量个数
- 文章标题
- java集合(TreeSet自然排序)
- ActiveX控件(MFC篇)
- Linux下的C语言编程——sqlite3实现停车场管理系统
- NOIP2012 Day1T1Vigenère 密码 P1079
- 1488 数据结构实验:连通分量个数
- 189. Rotate Array
- GDI+ 读取(jpg,PNG,BMP)等格式)图片每个像素的值
- 11.25
- 安装Linux流量监控工具 - iftop
- Mybatis 查询Bean不包含字段的处理
- Redis系列之Redis配置(一)
- IsBackground对线程的重要作用
- 熟悉这几个常用命令,你就是Linux/Unix的vi高手了。