博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小希的迷宫
阅读量:6574 次
发布时间:2019-06-24

本文共 1385 字,大约阅读时间需要 4 分钟。

View Code
1 #include 
2 int father[100001],k[100001]; 3 int flag ; 4 int find(int x) 5 { 6 while(x!=father[x]) 7 x = father[x] ; 8 return x ; 9 }10 void merge(int x,int y)11 {12 int fx , fy ;13 fx = find(x) ;14 fy = find(y) ;15 if(fx!=fy)16 father[fx] = fy;17 else flag = 0 ;//同父节点,成环18 }19 int main()20 {21 int i, a, b ;22 while(scanf("%d%d",&a,&b),a!=-1,b!=-1)23 {24 if(a==0&&b==0)25 {26 printf("Yes\n");27 continue;28 }29 for(i=1; i<=100001; i++)30 {31 father[i] = i;32 k[i] = 0 ;//注意初始化33 }34 flag = 1 ;35 k[a] = k[b] = 1 ;36 merge(a, b) ;37 while(scanf("%d%d",&a,&b),a!=0,b!=0)38 {39 merge(a, b) ;40 k[a] = k[b] = 1 ;41 }42 int num = 0;43 for(i = 0 ; i < 100001 ; i++)44 {45 if(father[i]==i&&k[i])//判断根节点的数目46 num++;47 if(num>1)48 flag = 0;49 }50 if(flag)51 printf("Yes\n");52 else53 printf("No\n");54 }55 return 0;56 }

总结:题目意思是找到判断是不是连通无环的图,首先想到的就是并查集。

1判断成环的时候,只要判断输入边的两个点。有一个共同的父节点,那么这两个点就成环。

2判断连通的时候,只要判断根节点数为1即可。

注意:当输入的这组数据只有 0 0 时,依然是满足条件的,即应输出 "Yes"。

转载于:https://www.cnblogs.com/yelan/archive/2013/02/21/2920484.html

你可能感兴趣的文章
多年前写的一个ASP.NET网站管理系统,到现在有些公司在用
查看>>
vue-cli中理不清的assetsSubDirectory 和 assetsPublicPath
查看>>
从JDK源码角度看Short
查看>>
解密Angular WebWorker Renderer (二)
查看>>
parceljs 中文文档24小时诞生记
查看>>
五年 Web 开发者 star 的 github 整理说明
查看>>
Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo
查看>>
ReactNative字体大小不随系统字体大小变化而变化
查看>>
中台之上(五):业务架构和中台的难点,都是需要反复锤炼出标准模型
查看>>
为什么中台是传统企业数字化转型的关键?
查看>>
使用模板将Web服务的结果转换为标记语言
查看>>
inno setup 打包脚本学习
查看>>
php 并发控制中的独占锁
查看>>
从pandas到geopandas
查看>>
用express搭建网站
查看>>
如何在 Swift 中进行错误处理
查看>>
[Leetcode] Factor Combinations 因数组合
查看>>
用tinypng插件创建gulp task压缩图片
查看>>
BetaMeow----利用机器学习做五子棋AI
查看>>
APM终端用户体验监控分析(下)
查看>>