题目大意:            让你输入n,m,代表一个迷宫中的两个点,要求这个迷宫中,不能有回路。这是一个无向图,但是其实根据题意来说,最终应该是一棵树。 解题思路:            只要输入的时候一开始判断两个点的父节点是不是相同的,如果相同,那么说明这两个点是连通的,你再加上去,就证明要产生回路啦。所以要排除,,还有,当输入n,m为0时,这时候输出yes,最后再判断下,这个图有没有连通分量就可以了。。。

#include
#include
using namespace std;
const int MAX=100005;
int pre[MAX];
int visited[MAX];
int find(int x)
{ int r, j; r = x; while(pre[r] != r) { r = pre[r]; } while(pre[x] != r) //优化{ j = pre[x];//从底部,一个一个判断上去,如果有一个父节点不是根节点,那么就将它放在根节点上pre[x] = r; x = j;} return r;
}
//int find(int x)
//{
//
//    int r=x;
//
//    while(pre[r]!=r)
//
//        r=pre[r];
//
//    return r;
//}
//void merge(int x,int y)
//{
//
//    int fx,fy;
//
//    fx=find(x);
//
//    fy=find(y);
//
//    if(fx!=fy)
//
//        pre[fx]=fy;
//}int main(void)
{int n, m, f1, f2;while(scanf("%d%d", &n,&m)==2){memset(visited,0,sizeof(visited));for(int i = 1; i < MAX; i++) pre[i] = i;if (n == -1 && m == -1 )break;if (n == 0 && m == 0 ){  printf("Yes\n");continue;}f1 = find(n); f2 = find(m); pre[f1]=f2;visited[n]=visited[m]=1;int minn=200005,maxn=0,flag=0;if ( n< minn )     minn = n;           //找到输入 的所有数据中最小的和最大的便于减小最后数组遍历时的复杂度 if ( m < minn )     minn = m;if ( n> maxn )     maxn = n;if ( m > maxn )     maxn = m;while(scanf("%d%d", &n,&m)) { if ( n== 0 && m == 0)break;        if ( n< minn )     minn = n;           //找到输入 的所有数据中最小的和最大的便于减小最后数组遍历时的复杂度 if ( m < minn )     minn = m;if ( n> maxn )     maxn = n;if ( m > maxn )     maxn = m;visited[n]=visited[m]=1;f1 = find(n); f2 = find(m); if(f1==f2){flag=1;}else{pre[f1]=f2;}} if(flag==1)printf ("No\n");if (flag==0){for (int i = minn; i <= maxn; i++){if ( visited[i] && pre[i] == i )flag++;}if (flag == 1)printf ("Yes\n");elseprintf ("No\n");}          } return 0;
}

转载于:https://www.cnblogs.com/cchun/archive/2011/11/09/2520177.html

HDU1272_并查集相关推荐

  1. 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈

    题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...

  2. HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集

    题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...

  3. HDU 2586 How far away ? LCA ---tanjar+并查集 离线算法

    tanjar算法离线求LCA的思想主要是利用并查集的思想. 求距离的话就是d[start[i]]+end[en[i]]-2*d[lca[i]]; 首先从根节点dfs,在深度遍历的回溯的过程中不断的更新 ...

  4. POJ - 2513 Colored Sticks 欧拉通路+并查集+静态树

    一开始想用map来搞,但是感觉好复杂,然后想了一下看大佬们用trie做的,感觉十分合理就敲了一发. 一开始re,数组要开到550000 只会静态的字典树,在每个根节点看是否出现过改颜色,如果没有就把该 ...

  5. 关于 并查集(union find) 算法基本原理 以及 其 在分布式图场景的应用

    二月的最后一篇水文-想写一些有意思的东西. 文章目录 环检测在图数据结构中的应用 深度/广度优先 检测环 并查集数据结构 (Union-Find) 基本概念 初始化 合并 union 查找祖先 优化1 ...

  6. 【BZOJ1015】【JSOI2008】星球大战 并查集

    题目大意 给你一张\(n\)个点\(m\)条边的无向图,有\(q\)次操作,每次删掉一个点以及和这个点相邻的边,求最开始和每次删完点后的连通块个数. \(q\leq n\leq 400000,m\le ...

  7. 并查集 HDOJ 1232 畅通工程

    题目传送门 1 /* 2 并查集(Union-Find)裸题 3 并查集三个函数:初始化Init,寻找根节点Find,连通Union 4 考察:连通边数问题 5 */ 6 #include <c ...

  8. 1013 Battle Over Cities(并查集解法)

    关于背景的介绍见1013 Battle Over Cities(图的DFS解法) DFS就是不算特定结点后数连通子图的总数,再减一.我想着那么并查集就是数不算特定节点后,集合元素(根)的个数.但是我弄 ...

  9. 并查集专题练习:好朋友(未完待续)

    有空再把题目补上 输入样例1 4 2 1 4 2 3 样例输出1 2 输入样例2 7 5 1 2 2 3 3 1 1 4 5 6 输出样例2 3 解题思路: 1. 这题放在并查集的专题后面,有查找也有 ...

最新文章

  1. C/C++语言之 日期 时间
  2. 三维重建13:点云的局部特征总结
  3. sap.m.SplitApp
  4. .Net微服务实战之可观测性
  5. java字符函数_java字符串函数用法汇总
  6. 用flask部署模型
  7. css3 transform文字,CSS3 transform 字体模糊问题
  8. spark学习-62-Spark:Yarn-cluster和Yarn-client区别与联系
  9. mysql中的索引什么意思_索引是什么意思(数据库中的索引是什么)
  10. 【Python数据分析】数据预处理1——数据清洗
  11. Bailian2723 不吉利日期(POJ NOI0113-02)【日期计算】
  12. C++两个函数可以相互递归吗_通俗讲:数据结构递归思想
  13. 4.4 VGG CNN、tensorflow实现——python实战
  14. Tomcat免安装版执行tomcat9.exe闪退
  15. java一卡通实例代码_java写的简单校园卡管理系统 校园一卡通 - 下载 - 搜珍网
  16. FastDFS原理概括
  17. c# 操作word光标
  18. win7系统下安装LINUX系统教程
  19. 什么是UEFI启动?
  20. Linux计算节点怎么关闭,OpenStack 删除无用的计算结点

热门文章

  1. c语言获取时间并存储,如何在C程序中获取日期和时间值?
  2. 【必看】Linux 系统的备份恢复
  3. php float 和double,PHP float 浮点型数据类型
  4. 费用节省 50%,函数计算 FC 助力分众传媒降本增效
  5. 【深度】阿里巴巴万级规模 K8s 集群全局高可用体系之美
  6. 队列顺序结构C/C++实现(数据结构严蔚敏版)
  7. yii 全选 php,yii2中gridview使用技巧小结(四)——全选等批量操作
  8. c语言初学者百题大战答案七,C语言百题大战2405how many minutes
  9. 怎样增加混凝土粘聚性_如何改善中低强度等级混凝土粘聚性? 这篇文章一定要看...
  10. jsp oracle 环境配置文件,jsp + tomcat 连接Oracle数据实例