zoukankan      html  css  js  c++  java
  • 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!
    ");
    89         else printf("NO
    ");
    90     }
    91     return 0;
    92 }
    View Code

     

  • 相关阅读:
    C#里的async和await的使用
    解决 .NET CORE3.0 MVC视图层不即时编译
    【转】CSS实现自适应分隔线的N种方法
    iscrolljs 看API 回顾以前开发中失误
    自由了-和过去说再见
    js 性能基准测试工具-告别可能、也许、大概这样更快更省
    dom事件不求甚解,色解事件捕获和冒泡
    百度mobile UI组件GMU demo学习1-结构和初始化
    自己收集原生js-2014-2-23
    如何在电脑上测试手机网站(补充)和phonegap
  • 原文地址:https://www.cnblogs.com/haoabcd2010/p/7502269.html
Copyright © 2011-2022 走看看