1535 深海探险

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!

//只需要判断是不是只有一个环的连通图即可,tarjan瞎搞搞

 1 # include <cstdio>
 2 # include <cstring>
 3 # include <cstdlib>
 4 # include <iostream>
 5 # include <vector>
 6 # include <queue>
 7 # include <stack>
 8 # include <map>
 9 # include <bitset>
10 # include <sstream>
11 # include <set>
12 # include <cmath>
13 # include <algorithm>
14 # pragma  comment(linker,"/STACK:102400000,102400000")
15 using namespace std;
16 # define LL          long long
17 # define pr          pair
18 # define mkp         make_pair
19 # define lowbit(x)   ((x)&(-x))
20 # define PI          acos(-1.0)
21 # define INF         0x3f3f3f3f3f3f3f3f
22 # define eps         1e-8
23 # define MOD         1000000007
24
25 inline int scan() {
26     int x=0,f=1; char ch=getchar();
27     while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘) f=-1; ch=getchar();}
28     while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘; ch=getchar();}
29     return x*f;
30 }
31 inline void Out(int a) {
32     if(a<0) {putchar(‘-‘); a=-a;}
33     if(a>=10) Out(a/10);
34     putchar(a%10+‘0‘);
35 }
36 # define MX 105
37 /**************************/
38
39 int n,m;
40 int ccc,cir;
41 vector<int> G[MX];
42 int inst[MX];
43 int vis[MX];
44
45 void func(int x,int pre)
46 {
47     vis[x]=ccc;
48     inst[x]=1;
49     for (int i=0;i<G[x].size();i++)
50     {
51         if (G[x][i]==pre) continue;
52
53         if (!vis[G[x][i]])
54             func(G[x][i],x);
55         else
56         {
57             if (inst[G[x][i]])
58                 cir++;
59         }
60     }
61     inst[x]=0;
62 }
63
64 int main()
65 {
66     while (scanf("%d%d",&n,&m)!=EOF)
67     {
68         for (int i=1;i<=m;i++)
69         {
70             int x,y;
71             scanf("%d%d",&x,&y);
72             G[x].push_back(y);
73             G[y].push_back(x);
74         }
75         ccc=0;
76         cir=0;
77         memset(vis,0,sizeof(vis));
78         for (int i=1;i<=n;i++)
79         {
80             if (!vis[i])
81             {
82                 ccc++;
83                 memset(inst,0,sizeof(inst));
84                 func(i,-1);
85             }
86         }
87         if (ccc==1&&cir==1)
88             printf("FHTAGN!\n");
89         else printf("NO\n");
90     }
91     return 0;
92 }

时间: 2024-08-04 14:14:10

1535 深海探险的相关文章

这位智商奇高的超级天才去了:他简直活出了别人八辈子的精彩!

对于大多数人而言,比尔·盖茨是微软的代名词,而鲜为人知的是,如果没有保罗·艾伦,盖茨甚至都不会开始他们的创业.用盖茨的话来说:没有他,个人电脑就不会存在! 18年10月16日,微软联合创始人保罗·艾伦去世成为全球各大媒体科技及体育板块报道的重点,不仅因为他帮助开创了个人电脑革命,更因为他65岁的人生,却活出别人八辈子的精彩! 据美国媒体报道,由于出现非霍奇金氏淋巴瘤并发症,微软联合创始人保罗·艾伦15日在西雅图与世长辞,享年65岁.就在<福布斯>杂志刚刚发布的“美国50大慈善家”排行榜上,保罗

深海机器人(cogs 742)

?问题描述:深海资源考察探险队的潜艇将到达深海的海底进行科学考察.潜艇内有多个深海机器人.潜艇到达深海海底后,深海机器人将离开潜艇向预定目标移动.深海机器人在移动中还必须沿途采集海底生物标本.沿途生物标本由最先遇到它的深海机器人完成采集.每条预定路径上的生物标本的价值是已知的,而且生物标本只能被采集一次.本题限定深海机器人只能从其出发位置沿着向北或向东的方向移动,而且多个深海机器人可以在同一时间占据同一位置.?编程任务:用一个P′Q 网格表示深海机器人的可移动位置.西南角的坐标为(0,0),东北

HDU 1535 &amp;&amp; POJ 1511 Invitation Cards (SPFA 模板 + 反向建图)

Invitation Cards HDU: Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) POJ: Time Limit: 8000 MS     Memory Limit: 262144 K       Problem Description In the age of television, not many people attend theater performa

bzoj2246: [SDOI2011]迷宫探险

2246: [SDOI2011]迷宫探险 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 202  Solved: 118[Submit][Status][Discuss] Description 这是一个单人游戏. 游戏开始时,玩家控制的人物出生在迷宫的某个位置,玩家的目标是控制人物走到迷宫的某个出口(出口可能有多个).迷宫里有k类陷阱(用"A"."B"."C"--表示,相同字母代表相同类型的陷阱

POJ 2431 Expedition(探险)

Time Limit: 1000MS   Memory Limit: 65536K [Description] [题目描述] A group of cows grabbed a truck and ventured on an expedition deep into the jungle. Being rather poor drivers, the cows unfortunately managed to run over a rock and puncture the truck's f

tyvj 丛林探险

描述 东非大裂谷中有一片神秘的丛林,是全世界探险家的乐园,著名黄皮肤探险家BB一直想去试试.正好我国科学家2005年4月将首次对东非大裂谷进行科考,BB决定随科考队去神秘丛林探险.在出发之前,他搜集了国内外有关神秘丛林探险的资料,并绘制成一张地图:该地图上有若干安全点(包括入口点和出口点),并将这些安全点编号为1.2.-.n:如果一个安全点和另一个安全点有一条路直接相通,则用一条边标示:该图是一个连通图(任意两点间有至少一条路径),地图上每条路的长度和走这条路需要耗费的体力都做了标示. KK行走

第四章 搜索(深度、广度搜索、全排列、走迷宫、再解炸弹人、宝岛探险、水管工游戏)

一.深度优先搜索DFS 深度优先搜索DFS的关键思想是:当下应该怎么做(每个方法都试一遍),这一步解决后,进入下一步,下一步的解决方法和这一步的解决方法是一样的 DFS的基本模型 void dfs(int step) { 判断边界 尝试每一种可能  for(i=1;i<=n;i++) { 继续下一步 dfs(step+1) } 返回 } 1.1全排列 1 //输入一个数n 2 //输出1-n的全排列 3 #include <stdio.h> 4 int n, book[10], a[10

蓝桥杯-福尔摩斯到某古堡探险

福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA 他对华生说:"ABCDE应该代表不同的数字,问号也代表某个数字!" 华生:"我猜也是!" 于是,两人沉默了好久,还是没有算出合适的结果来. 请你利用计算机的优势,找到破解的答案. 把 ABCDE 所代表的数字写出来. 答案写在"解答.txt"中,不要写在这里! 21978*4=87912 #include<iostream>using namesp

vijos1082丛林探险

P1082丛林探险 描述 东非大裂谷中有一片神秘的丛林,是全世界探险家的乐园,著名黄皮肤探险家BB一直想去试试.正好我国科学家2005年4月将首次对东非大裂谷进行科考,BB决定随科考队去神秘丛林探险.在出发之前,他搜集了国内外有关神秘丛林探险的资料,并绘制成一张地图:该地图上有若干安全点(包括入口点和出口点),并将这些安全点编号为1.2.….n:如果一个安全点和另一个安全点有一条路直接相通,则用一条边标示:该图是一个连通图(任意两点间有至少一条路径),地图上每条路的长度和走这条路需要耗费的体力都