1535 深海探险
题目来源:  CodeForces
基准时间限制:1 秒 空间限制:131072 KB 分值: 40  难度:4级算法题

很久很久以前的一天,一位美男子来到海边,海上狂风大作。美男子希望在海中找到美人鱼,但是很不幸他只找到了章鱼怪。

然而,在世界的另一端,人们正在积极的收集怪物的行为信息,以便研制出强大的武器来对付章鱼怪。由于地震的多发,以及恶劣的天气,使得我们的卫星不能很好的定位怪物,从而不能很好的命中目标。第一次射击的分析结果会反映在一张由n个点和m条边组成的无向图上。现在让我们来确定这张图是不是可以被认为是章鱼怪。

为了简单起见,我们假设章鱼怪的形状是这样,他有一个球形的身体,然后有很多触须连接在他的身上。可以表现为一张无向图,在图中可以被认为由三棵或者更多的树(代表触须)组成,这些树的根在图中处在一个环中(这个环代表球形身体)。

题目保证,在图中没有重复的边,也没有自环。

Input
单组测试数据
第一行给出两个数,n表示图中的点的个数,m表示图中边的数量。 (1≤ n≤100,0≤ m≤ n*(n-1)/2 )
接下来m行给出边的信息,
每一行有两上数x,y  (1≤ x,y≤ n,x≠y)
表示点x和点y之间有边相连。每一对点最多有一条边相连,点自身不会有边到自己。
Output
共一行,如果给定的图被认为是章鱼怪则输出"FHTAGN!"(没有引号),否则输出"NO"(没有引号)。
Input示例
6 6
6 3
6 4
5 1
2 5
1 4
5 4
Output示例
FHTAGN!

思路:

1、通过仔细读题我们能够知道,这个题就是在让你判断一个无向图,是否只包含一个环&&是一个连通图。

2、那么对于连通图的判定以及环的个数的判定,我们其实都可以通过并查集来搞定。一开始无脑想着去Dfs.而且点数也不多,细心想想其实不必要Dfs.我们并查集直接判断即可。

对于两个点,如果其在一个集合中了已经,那么这个边一定是成环边,对于成环边的个数进行判定,只有这种边的个数为1的时候,并且他是一个连通图的时候,才能判断他是一条章鱼。

Ac代码:

#include<stdio.h>
#include<string.h>
using namespace std;
int f[1005];
int find(int a)
{int r=a;while(f[r]!=r)r=f[r];int i=a;int j;while(i!=r){j=f[i];f[i]=r;i=j;}return r;
}
int merge(int a,int b)
{int A,B;A=find(a);B=find(b);if(A!=B){f[B]=A;}
}
int main()
{int n,m;while(~scanf("%d%d",&n,&m)){for(int i=1;i<=n;i++)f[i]=i;int cont=0;for(int i=0;i<m;i++){int x,y;scanf("%d%d",&x,&y);if(find(x)==find(y)){cont++;}else merge(x,y);}int root=0;for(int i=1;i<=n;i++){if(f[i]==i)root++;}if(root==1&&cont==1){printf("FHTAGN!\n");}else printf("NO\n");}
}

51nod 1535 深海探险【思维+并查集】相关推荐

  1. 51nod - 1535 深海探险

    很久很久以前的一天,一位美男子来到海边,海上狂风大作.美男子希望在海中找到美人鱼,但是很不幸他只找到了章鱼怪. 然而,在世界的另一端,人们正在积极的收集怪物的行为信息,以便研制出强大的武器来对付章鱼怪 ...

  2. 中石油训练赛 - 奎奎画画(思维+并查集+离线处理)

    题目描述 "为你写诗,为你静止,为你做不可能的事",爱情是一种怪事,它让奎奎开始学习画画.奎奎认为一张画的艺术价值等于画上的白色联通块个数(当一个格子和它上下左右四个方向上的某个相 ...

  3. Harmonious Graph CodeForces - 1253D(思维+并查集)

    You're given an undirected graph with n nodes and m edges. Nodes are numbered from 1 to n. The graph ...

  4. Codeforces Global Round 14 F. Phoenix and Earthquake 思维 + 并查集

    传送门 文章目录 题意: 思路: 题意: 给你nnn个点,mmm条边,限制xxx,每个点都有沥青aia_iai​,定义合并两个点即两点之间有边且au+av≥xa_u+a_v\ge xau​+av​≥x ...

  5. Codeforces Round #218 (Div. 2) D. Vessels(思维 并查集)

    题意:从上到下有n个杯子,编号从1到n.每个杯子有一定体积v[i]. 两种操作:1 x y, 向x水杯倒y水; 2 x, 询问x水杯有多少水. (水杯水溢出会往下流) n,q <= 2e5 思路 ...

  6. 51Nod 1366 贫富差距 ( 并查集+Floyed

    1366 贫富差距 题目描述 一个国家有N个公民,标记为0,1,2,-,N-1,每个公民有一个存款额.已知每个公民有一些朋友,同时国家有一条规定朋友间的存款额之差不能大于d.也就是说,a和b是朋友的话 ...

  7. 51nod 1366 贫富差距 (并查集+最短路)

    一个国家有N个公民,标记为0,1,2,...,N-1,每个公民有一个存款额.已知每个公民有一些朋友,同时国家有一条规定朋友间的存款额之差不能大于d.也就是说,a和b是朋友的话,a有x元的存款,b有y元 ...

  8. Hrbust 1849 商品中心【贪心+思维+并查集】好题!好题!

    商品中心 Time Limit: 2000 MS Memory Limit: 32768 K Total Submit: 7(5 users) Total Accepted: 3(3 users) R ...

  9. 【hautoj 1285 】 军团再临 【 思维+并查集】

    题目描述 燃烧军团大举入侵艾泽拉斯,现以在艾星建立了大量的军事要塞,这些要塞通过若干个道路直接或间接连接.如果两个城市是连通的,那么它们处于同一连通块之中.现在抗魔联军发明了一种威力巨大的法术,每发动 ...

最新文章

  1. HTMLCanvasElement.toDataURL()
  2. 图像窗口方面 window
  3. 【已解决】tomcat报严重: Socket accept failed
  4. laravel excel迁移到lumen
  5. fdtd算法的matlab程序,FDTD算法的Matlab程序
  6. Docker化Spring Boot应用程序
  7. 【Flink】Flink 1.9 写入 es6 案例
  8. jq 如何获取和当然元素相同类名的标签_JS/JQ基于localStorage的本地数据储存指南...
  9. 稚晖君软件硬件开发环境总结
  10. 用C#写一个微信登录软件(自己写协议)
  11. 叶俊应浙江警官学院的邀请讲授《司法警官的心理调试实用策略》
  12. 史上最长的介绍BI(商业智能)的干货
  13. 用python绘制小猪佩奇
  14. [李景山php] ddos 防御基础
  15. iconfont图标无法显示的问题
  16. *Linux学习笔记
  17. chromebook刷机_如何在Chromebook上设置家长控制
  18. 超详解三子棋(优化后)【万字教程包教包会】
  19. 《朱元璋为何隐瞒自己的民族成份》
  20. SQL server连接不上服务器时的解决方案

热门文章

  1. vue中控制浏览器滚动
  2. igraph包安装教程
  3. 【转载】win10环境下,利用自带虚拟机hyper-v安装centos7方法详解
  4. 常见笔顺错误的字_语文老师整理:12组常见笔顺易错字!很实用的资料,帮孩子收好!...
  5. OpenCV C++实现树结构可视化(画出一棵四叉树)
  6. (2020年最新版)App Store 审核指南
  7. 那周余嘉熊掌将得队对男上加男,强人所男、修!咻咻! 团队的Beta产品测试报告...
  8. 商城app被攻击了之后我们应该怎么处理?
  9. 百度DuerOS硅谷公布普罗米修斯计划,100万美金基金吸引AI才俊
  10. 仿微信朋友圈拍照上传