400字范文,内容丰富有趣,生活中的好帮手!
400字范文 > 1535 深海探险

1535 深海探险

时间:2019-06-01 23:40:25

相关推荐

1535 深海探险

1535深海探险

题目来源:CodeForces

基准时间限制:1秒 空间限制:131072KB 分值: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示例

66

63

64

51

25

14

54

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 LLlong long17 # define prpair18 # define mkp make_pair19 # define lowbit(x) ((x)&(-x))20 # define PIacos(-1.0)21 # define INF 0x3f3f3f3f3f3f3f3f22 # define eps 1e-823 # define MOD 100000000724 25 inline int scan() {26int x=0,f=1; char ch=getchar();27while(ch<'0'||ch>'9'){if(ch=='-') f=-1; ch=getchar();}28while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}29return x*f;30 }31 inline void Out(int a) {32if(a<0) {putchar('-'); a=-a;}33if(a>=10) Out(a/10);34putchar(a%10+'0');35 }36 # define MX 10537 /**************************/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 {47vis[x]=ccc;48inst[x]=1;49for (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 else56 {57 if (inst[G[x][i]])58 cir++;59 }60}61inst[x]=0;62 }63 64 int main()65 {66while (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}91return 0;92 }

View Code

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
小鲸鱼深海探险记

小鲸鱼深海探险记

2018-06-17

深海探险记

深海探险记

2023-01-06

深海探险

深海探险

2018-06-23

深海探险之奇异的珍珠

深海探险之奇异的珍珠

2021-07-23