题意:

给你n个点m条边的无向图(无重边和自环),问你是否存在一个简单的环且环上的点都是某棵树的树根。

思路:

注意这句话:an undirected graph that can be represented as a set of three or more rooted trees, whose roots are connected by a simple cycle.也就是说首先我们要判断给出的无向图是否只有一块连通块。这里我用并查集来判断连通块个数,然后DFS一遍去找是否存在唯一的环(根据简单环的定义)。其实这里不用DFS去找是否有简单环,直接用n==m判断是否有简单环就可以Orz。。。。。。当时没想那么多直接暴力搞。。。。。

#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;const int MAX=105;
bool vis[MAX],edge[MAX][MAX],use[MAX];
vector<int> gr[MAX];
int n,m,num,fa[MAX];void init(){for(int i=1;i<=n;i++){fa[i]=i;}
}int Find(int x){int r=x,t;while(r!=fa[r]){r=fa[r];}while(x!=r){t=fa[x];fa[x]=r;x=t;}return r;
}void Union(int u,int v){int a=Find(u);int b=Find(v);if(a!=b){fa[a]=b;}
}void DFS(int u){for(int i=0;i<gr[u].size();i++){int v=gr[u][i];if(vis[v]&&edge[u][v]==false){num++;return;}if(vis[v]==false&&edge[u][v]==false){edge[u][v]=edge[v][u]=true;vis[v]=true;DFS(v);vis[v]=false;}}
}int main(){scanf("%d%d",&n,&m);int u,v;init();for(int i=1;i<=m;i++){scanf("%d%d",&u,&v);Union(u,v);gr[u].push_back(v);gr[v].push_back(u);}memset(vis,false,sizeof(vis));memset(edge,false,sizeof(edge));memset(use,false,sizeof(use));int cnt=0;for(int i=1;i<=n;i++){int p=Find(i);if(use[p]) continue;use[p]=true;cnt++;}if(cnt==1){num=0;int p=Find(1);vis[p]=true;DFS(p);if(num==1) printf("FHTAGN!\n");else printf("NO\n");}else printf("NO\n");return 0;
}

Codeforces 103B Cthulhu相关推荐

  1. CodeForces 103B Cthulhu

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

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

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

  3. Codeforces 103B - Cthulhu(并查集 找环和块)

    传送门:https://codeforces.com/problemset/problem/103/B 题意: 给一个n个结点,m条边的无向图 判断给定图是否满足以下条件: 能被表示为有3个及以上的有 ...

  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. Round 2 A - Cthulhu CodeForces - 103B -图同构,DFS

    题目链接: http://codeforces.com/problemset/problem/103/B 大意: 判断图的形状是否为一个章鱼型(?) 由几棵树构成,树的根节点围成一个环. 思路: 只需 ...

  6. Codeforces 104C Cthulhu dfs暴力 || 点双连通缩点

    题目链接:点击打开链接 题意: 给定n个点m条边的无向图 问图中是否存在 有且仅有一个简单环和一些树,且这些树的root都在这个简单环上. 瞎写了个点双..== #include <stdio. ...

  7. 【CodeForces】CF103B Cthulhu

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

  8. codeforces Cthulhu 简单图论

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

  9. CodeForces:103(div1)104(div2)

    文章目录 前言 CF104A Blackjack Description\text{Description}Description Solution\text{Solution}Solution Co ...

最新文章

  1. Jake Coco - Under The Covers, Vol. 2 {2011}
  2. Android之SharedPreferences(二)——跨程序调用
  3. intellij从git上拉取maven项目详细步骤
  4. python脚本转换成apk_使用Python-For-Android将Python脚本导出到Android可执行文件(.apk)...
  5. 最短路径问题(信息学奥赛一本通-T1342)
  6. 由Net Applications的浏览器的市场份额想开的
  7. 组合体视图的画图步骤_(完整版)组合体视图画法教案
  8. MySQL的SQL 语句:根据从表记录个数对主表排序
  9. Transformer预训练模型已经变革NLP领域,一文概览当前现状
  10. 欧拉定理以及欧拉降幂
  11. vos3000 2.1.1.5 安装包及注册机【电销电话机器人源码私有云部署 www.ruikesoft.com 正版授权 抵制盗版】
  12. 纯真数据库mysql_纯真数据库下载或自动更新实现
  13. MATLAB高斯高通滤波图像
  14. 使用JMeter进行压力测试
  15. java输出罗马数字_java工具类——罗马数字和阿拉伯数字相互转换
  16. tensorflow获取中间变量参数值
  17. AUTOCAD——窗口缩放
  18. 微信推送早安教程(一)
  19. 帐户当前被锁定,所以用户 sa 登录失败。系统管理员无法将该帐户解锁 解决方法
  20. 制作u盘winpe启动盘_制作U盘启动盘

热门文章

  1. CSS背景:背景色/背景图像/背景重复/背景附着/简写背景属性(一文搞懂)
  2. shell编程时,引用相对路径的shell文件
  3. 百度搜索引擎压力测试报告
  4. golang结构体的坑之大小写
  5. 【oracle】无法通过 1024 (在表空间 USERS 中) 扩展 ORA-06512
  6. Linux服务器如何做raid1,Linux下制作raid1
  7. CAD显示problem loading acadres.dll(或其他dll) resource file解决方法
  8. 关于那些系统错误的改进
  9. 抓取检测数据集Cornell数据解析
  10. uniapp开发:uniapp之切换vue3,一直使用一直爽