hdu 1272

利用并查集方法,找到各点的根节点。

几点注意:

一、树:1.无环 2.根节点入度为0,其余入度为1

判断依据:

1.若两个点的根节点相同(这两个点是父子关系),则形成环。

2.若所有点中只有一个点的根节点是他本身,则根节点入度为0。

二、

1. 0 0 :空树也是一颗树。

 1 #include<iostream>
 2 #include<algorithm>
 3 #define Max 100005
 4 using namespace std;
 5
 6 int f[Max];
 7
 8 int root(int i)
 9 {
10     if(f[i] == i)
11         return i;
12     else
13         return root(f[i]);
14 }
15 int huan;
16 void U(int a,int b)
17 {
18     int f1,f2;
19     f1 = root(a);
20     f2 = root(b);
21     if(f1 != f2)
22     {
23         f[f1] = f2;
24     }
25     else
26     {
27         huan  = 1;//子环
28     }
29 }
30 int main()
31 {
32     int n,m,i,j,k,t;
33     while(~scanf("%d %d",&n,&m))
34     {
35         huan = 0;
36         memset(f,0,sizeof(f));
37         if(m == -1 && n == -1)
38             break;
39         else if(m == 0 && n == 0)
40         {
41             printf("Yes\n");
42             continue;
43         }
44         else
45         {
46             f[n] = n;
47             f[m] = m;
48             U(n,m);
49         }
50         while(~scanf("%d %d",&n,&m))
51         {
52             if(n == 0 && m == 0)
53                 break;
54             else
55             {
56                 if(f[n] == 0)
57                 {
58                     f[n] = n;
59                 }
60                 if(f[m] == 0)
61                 {
62                     f[m] = m;
63                 }
64                 U(n,m);
65             }
66         }
67         if(huan)
68         {
69             printf("No\n");
70             continue;
71         }
72         k = 0;
73         for(i = 0;i < Max;i ++)
74         {
75             if(f[i] == i && f[i] != 0) //只有一个点的根节点是他本身
76                 k ++;
77         }
78         if(k == 1)
79             printf("Yes\n");
80         else
81             printf("No\n");
82     }
83     return 0;
84 }

C++

转载于:https://www.cnblogs.com/ypacm/p/6690807.html

利用并查集判断一个无向图是否成树相关推荐

  1. ccsu1359 木棒相交 (叉积线段判交,并查集判断是否属于同一个集合)

    题意:判断n条木棒中木棒a是否与木棒b相交.其中木棒的相交具有传递性. 首先用一个判断线段是否相交的函数判断相交: struct Point {double x;double y; }; typede ...

  2. java并查集判断是否是连通图_判断 连通图 (图论_并查集)

    给定一个无向图和其中的所有边,判断这个图是否所有顶点都是连通的. 输入:每组数据的第一行是两个整数n 和m(0< n <=1000).n 表示图的顶点 数目,m 表示图中边的数目.如果n ...

  3. 使用并查集实现查找无向图的连通分量和求解有向图的强连通分量

    目录 1.无向图的连通分量 2.求解连通分量算法的实现 3.有向图的强连通分量 4.求解有向图的强连通分量 使用C语言实现并查集 有向图和无向图 1.无向图的连通分量 无向图G中,如果存在从顶点v1到 ...

  4. java并查集_一个非常实用而且精妙的算法-并查集(java语言实现)

    在学习数据结构的时候,老师多少会提到并查集,他的应用也是超级广泛.本文首先会通过案例来对并查集有一个介绍.然后给出并查集的java实现. 一.并查集原理 话说在江湖上有很多门派,这些门派相互争夺武林霸 ...

  5. 算法-并查集-加边无向图

    题目描述:给你一个 n 个点,m 条边的无向图,求至少要在这个的基础上加多少条无向边使得任意两个点可达~ 输入描述:第一行两个正整数 n 和 m . 接下来的m行中,每行两个正整数 i . j ,表示 ...

  6. java并查集判断是否是连通图_并查集-判断图的连通

    首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的.最后要解决的是整幅图的连通性问题.比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几个连通分 ...

  7. hdu1272——使用并查集判断是否形成环状

    先上题目链接HDU1272 通读题目,再比较下面给出的三张图,我们可以发现前面两张输出YES的图里面没有回路,第三张图里面有回路,结合题目,我们可以发现这道题目考察的是"运用并查集判断图中是 ...

  8. HDU1878(判断一个无向图是否存在欧拉回路)

    1.欧拉回路:定义:经过图(有向图或无向图)中每条边一次且仅一次并且行遍图中每个顶点的回路( 闭合的欧拉路径,即一个环,保证每条边都通过且仅通过一次). 2.问题1:判断一个无向图是否有欧拉回路的充要 ...

  9. 【数据结构】-图-判断一个无向图是否是一棵树

    思路:判断一个无向图是否是一棵树,只需要判断该图是否是一个包含n个顶点的连通子图且边数为n-1,只要这两个条件都满足,那么就是一棵树. 因此我们可以采用深度遍历,若图连通,那么只要一次深度遍历就可以遍 ...

最新文章

  1. css 网格布局_我从CSS网格布局中学到的东西
  2. 同一服务器上多个版本的 sqlserver ,如何连接,改变某一实例的端口号
  3. 山寨SaaS--管理软件夜未眠(五)
  4. java加载图片白屏,tomcat白屏~
  5. 【JPA 级联保存/级联删除】@OneToMany (双向) 一对多【转】
  6. 洛谷P2770 航空路线问题(费用流)
  7. 看到小童鞋s茁壮成长
  8. 利用递归分割(Split)字符串
  9. DBCP数据库连接失效的解决方法(Io 异常:Connection reset)
  10. Bugly使用及APP版本更新
  11. Photoshop(简称Ps)制作个人logo
  12. 海马玩模拟器——搭建React Native环境
  13. 不愧是大厂牛人!用Java实现象棋小游戏(附超详细,超长究极无敌代码)
  14. 解密weblogic控制台账号密码
  15. 计算机安全模式无法启动修复,win7旗舰版安全模式故障修复教程
  16. 咖啡汪日志—— 回退兜底 及实用的服务降级策略
  17. mbedtls 入门第四课--移植mbedtls到VS和ESP8266--8266SDK SHA256移植
  18. 零知识证明(zero knowledge validation)
  19. 数据增强 data augmentation
  20. 科技“战”疫,AI的春天来了吗?

热门文章

  1. 18. javacript高级程序设计-JavaScript与XML
  2. cocos2d-x的定时器
  3. VS 2008 xml文件(包括web.config)高亮显示和智能提示失效修复
  4. python基础语法_字符串编码
  5. h:commandButton
  6. .netcore部署Linux并结合Nginx反向代理 get started
  7. Eclipse+Pydev环境搭建
  8. scut AccountServer 使用mysql
  9. stl源码分析de练习
  10. MYSQL 【汇总数据】 【分组数据】 学习记录