当前位置:网站首页>A - 深海探险
A - 深海探险
2022-06-28 08:10:00 【Angeliaaa】
很久很久以前的一天,一位美男子来到海边,海上狂风大作。美男子希望在海中找到美人鱼,但是很不幸他只找到了章鱼怪。
然而,在世界的另一端,人们正在积极的收集怪物的行为信息,以便研制出强大的武器来对付章鱼怪。由于地震的多发,以及恶劣的天气,使得我们的卫星不能很好的定位怪物,从而不能很好的命中目标。第一次射击的分析结果会反映在一张由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"(没有引号)。
Sample Input
6 6 6 3 6 4 5 1 2 5 1 4 5 4
Sample Output
FHTAGN!
题意:给出两个数n,m,代表有n个节点m条边,然后跟着m行每行两个数a,b代表a跟b相连。问构成的这个图是否是一个章鱼的形状,章鱼的形状就是有一个环并且能构成一个连通图。是的话输出FHTAGN!,否则输出NO。
思路:这个题要构成章鱼只需满足两个条件,1. 构成连通图。2.只有一个环。用并查集实现,在输入的过程中进行合并,如果两个结点有共同的祖先说明形成环,那么环数加一。并且在合并完之后判断一下有几个祖先,如果有一个环并且只要一个祖先,就可以构成章鱼的形状。代码如下:
#include<stdio.h>
#include<string.h>
int f[110];
int getf(int v)
{
if(f[v]==v)
return v;
else
{
f[v]=getf(f[v]);
return f[v];
}
}
int merge(int u,int v)
{
int t1,t2;
t1=getf(u);
t2=getf(v);
if(t1!=t2)
{
f[t2]=t1;
return 0;
}
return 1;
}
int main()
{
int i,x,y,n,m,r,sum;
while(~scanf("%d %d",&n,&m))
{
r=0;
sum=0;
for(i=1; i<=n; i++)
f[i]=i;
for(i=0; i<m; i++)
{
scanf("%d %d",&x,&y);
if(merge(x,y)==1)
r++;
}
for(i=1; i<=n; i++)
{
if(f[i]==i)
sum++;
}
if(sum==1&&r==1)
printf("FHTAGN!\n");
else
printf("NO\n");
}
return 0;
}
边栏推荐
猜你喜欢
随机推荐
关于在cmd中MySQL不能插中文数据的原因
MySQL row format parsing
B_QuRT_User_Guide(30)
MySQL tablespace parsing
In flood fighting and disaster relief, the city donated 100000 yuan of love materials to help Yingde
[JS] - [throttling and anti shake function]
Introduction to kubernetes (I)
Little artist huangxinyang was invited to participate in the Wuhan station of children's unit of Paris Fashion Week
Children's unit of 2022 Paris fashion week ended successfully at Wuhan station on June 19
Reverse mapping of anonymous pages
【尚品汇】项目笔记
B_ QuRT_ User_ Guide(27)
Prometheus service discovery
Map. ToCharArray( ),Map. getOrDefault(). Map. charAt()
Discussion on the application of GIS 3D system in mining industry
Redis deployment under Linux & redis startup
Selenium reptile
Sword finger offer 03 Duplicate number in array
块级元素上下左右居中的两个小技巧
PMP从报考到拿证基本操作,了解PMP必看篇









