第三次题组 [Cloned] - Virtual Judge (vjudge.net)

【题目描述】

一个具有 n 个顶点和 m 条边的无向图。现在,世界上最好的头脑即将确定这张图是否可以被视为克苏鲁。

为了简单起见,让我们假设克苏鲁从空间里看起来就像一个附有触手的球形身体。从形式上讲,我们将把这样的无向图视为克苏鲁,它可以表示为一组三棵或更多根树,其根通过一个简单的循环连接起来。

保证图形不包含多条边和自循环。

【输入】

第一行包含两个整数 — 图形的顶点数 n 和边数 m (1 ≤ n ≤ 100, 0 ≤ m ≤

以下 m 行中的每一条都包含一对整数 x 和 y,它们表明顶点 x 和 y 之间存在一条边(1 ≤ x、y ≤ n、 x ≠ y)。对于每对顶点,它们之间最多只有一条边,没有边将顶点连接到自身。

【输出】

如果图表不是克苏鲁,请打印“NO”,如果是,则打印“FHTAGN!

解题思路

这个题是用到并查集。

并查集数组f[n],要注意在使用之前初始化,将f[i]=i,作用是:未连接边时,每个顶点的首领结点是它自己,f[i]中的i是当前的结点序号,赋值的i是它的首领结点编号。

题意大概是:将输入的信息连接为一张无向图,其中连接的无向图如果满足:只包含一个回路,回路上的任意顶点都可以延展出去。

1、在连接边的时候,用并查集判读是否形成回路, 如果形成了回路,判断这个形成的回路是否是第一个形成的回路。

2、题目中给到的点,必须全部用边连接,所以用一个计数器统计连接的边数(因为可能会出现重复连接的边,或边数不足以连接的情况)

3、没有回路的情况也需要判断,所以用了两个标记:flag和flag2

代码如下

#include <iostream>
#include <stdio.h>
using namespace std;
int f[1010];
//并查集
int find(int x)
{if (f[x] == x)return x;elsereturn  find(f[x]);
}int main()
{int n, m;cin >> n >> m;//初始化f数组for (int i = 1; i <= n; i++)f[i] = i;int flag, a, b, num, flag2;flag = num = flag2 = 0;for (int i = 0; i < m; i++) {cin >> a >> b;int px = find(a), py = find(b);//两个点还未形成通路的情况if (px != py) {num++;f[px] = py;}//连接当前的点形成了回路,接下来判断这个回路是是形成的第一个回路还是第二个回路else {//如果flag==0,说明先前未形成回路,当前形成的是第一个回路if (flag==0) {num++;flag = 1;}//如果是形成的第二个回路,将flag2赋为1,结束循环,此时能判断肯定是输出noelse{flag2 = 1;break;}}}if (!flag2 && flag && num == n)cout << "FHTAGN!";elsecout << "NO";return 0;
}

N - Cthulhu相关推荐

  1. Codeforce Cthulhu

    题目:Cthulhu 题意:就是让你找一个简单的环,而且这个环不需要经过所有的点,只需要经过某些点就可以了,如果存在输出 FHTAGN! ,否则输出NO. 思路:简单的环就是只存在一个环,不存在多种环 ...

  2. CF103B Cthulhu 解题报告

    CF103B Cthulhu 解题报告 1 题目链接 传送门 2 题目大意 题目 : 克苏鲁 (什么玩意儿) 题目大意 : 给定一个 n n n个定点 m m m条边的无向图,问该图是否唯一存在一个环 ...

  3. Codeforces 103B. Cthulhu 并查集运用

    题目链接: 题面: ...Once upon a time a man came to the sea. The sea was stormy and dark. The man started to ...

  4. A - Cthulhu CodeForces - 103B (并查集)

    -Once upon a time a man came to the sea. The sea was stormy and dark. The man started to call for th ...

  5. 氰化物工作室的游戏Cthulhu,或最终获得VR支持

    在2017年E3的闭门会议中,记者们看到了氰化物工作室的"Cthulhu".这款游戏充分地融入了它的洛夫洛根的根基,给玩家一个探索神秘的机会,而这个神秘的结局可能会让他们彻底发疯. ...

  6. 【CodeForces】CF103B Cthulhu

    题目地址: https://www.luogu.com.cn/problem/CF103B 题面翻译: 很久很久以前的一天,一位美男子来到海边,海上狂风大作.美男子希望在海中找到美人鱼,但是很不幸他只 ...

  7. CodeForces 103B Cthulhu

    http://codeforces.com/problemset/problem/103/B 找环,一个环 #include<bits/stdc++.h> using namespace ...

  8. A - Cthulhu

    点击打开链接 题目意思就是有一个至少三个点的环,环上的每个点可以延展出去,构成树,但是不能再构成环 1.并查集 #include <iostream> #include <stdio ...

  9. codeforces-103B Cthulhu

    链接:http://codeforces.com/problemset/problem/103/B 题意:给定一个图,判断该图是否由若干棵树的树根构成一个环 题解:先并查集判连通,并且满足n=m #i ...

  10. codeforces Cthulhu 简单图论

    题意:给定一个点集,和边集,问这个它的结构是不是像妖怪. 做法:水,只要DFS判断是否只有一个联通分量,然后再判断N=M即可 #include <iostream> #include &l ...

最新文章

  1. 浅谈权限设计(来自深空老大)
  2. java操作XML文件--读取内容
  3. PHP密码生成管理源码,php密码生成类(附源码)
  4. nginx做服务器入口_Nginx实现http反向代理
  5. 5g的负面影响_设计系统的实施是否会对早期概念产生负面影响?
  6. python自带的shell、其性能优于ipython_python3.4 shell
  7. OpenCV辅助对象(help objects)(3)——Ptr
  8. 简易新闻客户端android
  9. css文件内容的组织
  10. 2.GitLab 项目管理
  11. 【hdu2588】求[1-n]中和n的gcd大于m的数的个数(求欧拉函数值)
  12. 飞机大战游戏源html代码,HTML5全民飞机大战游戏代码
  13. 卷积神经网络(CNN)详解
  14. 百度数据可视化Sugar BI — 数据监控与预警(附保姆级教程)
  15. 小和尚打水问题_老和尚和小和尚打水问题
  16. 中央C-高低音谱号里的中央C和其它音节
  17. 计算机无法正常更新,无法完成更新正在撤销更改请不要关闭你的计算机的解决方法...
  18. silverlight,WPF动画终极攻略之会飞的小鸟篇(Blend 4开发)
  19. 甲午海战北洋水师战败的战术分析
  20. 在mac上安装md5命令

热门文章

  1. IDEA代码抽取为方法快捷键
  2. 《C#零基础入门之百识百例》(九十一)预处理器指令 -- 代码示例
  3. The type okio.ByteString cannot be resolved. It is indirectly referenced from required .class files
  4. sublime text3--制作网页常用插件
  5. iphone和ipad设备分辨率
  6. 在css中设置font-family:微软雅黑却不生效问题
  7. Caffe版Faster R-CNN可视化——网络模型,图像特征,Loss图,PR曲线
  8. chrony+gpsd部署pps校时
  9. 小学 计算机阅卷,小学生考试也使用网上阅卷了,公平吗?
  10. 【宝塔】【Windows】【Blessing-Skin】【我的世界】用宝塔Windows搭建皮肤站