连通图
来源:互联网 发布:八爪鱼采集器导出数据 编辑:程序博客网 时间:2024/05/20 12:21
http://icpc.ahu.edu.cn/OJ/Problem.aspx?id=528
并查集:
- makeSet(s):建立一个新的并查集,其中包含 s 个单元素集合。
- unionSet(x, y):把元素 x 和元素 y 所在的集合合并,要求 x 和 y 所在的集合不相交,如果相交则不合并。
- find(x):找到元素 x 所在的集合的代表,该操作也可以用于判断两个元素是否位于同一个集合,只要将它们各自的代表比较一下就可以了。
#include <cstdio>#include <cstring>#include <cstdlib>#include <string>#include <map>#include <cmath>#include <iostream>#include <stdexcept>#include <cstddef>#include <algorithm>#include <vector>#include <numeric>#include <cctype>#define LL long long#define Endl endl#define INF 0x7fffffff//#define WJusing namespace std;int father[1010],n;int rank[1010];int Find(int x){if(x!=father[x]) father[x]=Find(father[x]);return father[x];}void Union(int x,int y){if((x=Find(x))==(y=Find(y))) return ;n--;if(rank[x]>rank[y]) father[y]=x;else {father[x]=y;if(rank[x]==rank[y]) rank[y]++;}}int main(int argc, char *argv[]){#ifdef WJ//freopen("in.txt","r",stdin);freopen("out.txt","w",stdout);#endifint m,s,t;for(int i=1;i<1010;i++)father[i]=i;memset(rank,0,sizeof(rank));scanf("%d%d",&n,&m);while(m--){scanf("%d%d",&s,&t);Union(s,t);}printf("%d\n",n-1);return 0;}
0 0
- 连通图
- 连通图
- 图连通
- 连通图
- 连通图
- 连通图
- 连通图
- 连通图
- 连通图
- 连通图
- 连通图
- 连通图
- 连通图和连通分量
- 判断强连通图、单向连通图、弱连通图
- 极大连通子图 + 极小连通子图 + 连通分量
- 连通图的强连通分支
- 连通图_连通分量FloodFill
- 图的连通
- win7下QT5程序打包
- 如何使用IEEE_cs_Latex写论文, 并加入中文
- GLSL教程:在OpenGL中向shader传递信息
- POJ P1151 Atlantis 这本是一道线段树加扫描线的板题~~
- Java4Android之Java+Annotation入门
- 连通图
- 修改oracle数据库用户名及密码
- spring MVC 学习遇到的问题及解决方案汇总
- Android数据库高手秘籍(二)——创建表和LitePal的基本用法
- 先验概率和后验概率
- ADO.NET简述
- HDU 1864 dp
- cacti输入正确的用户名和密码,网页没反应
- Key-value存储简介