zoukankan      html  css  js  c++  java
  • CodeForces

    题意

    https://vjudge.net/problem/CodeForces-103B

    很久很久以前的一天,一位美男子来到海边,海上狂风大作。美男子希望在海中找到美人鱼 ,但是很不幸他只找到了章鱼怪。

    然而,在世界的另一端,人们正在积极的收集怪物的行为信息,以便研制出强大的武器来对付章鱼怪。 于地震的多发,以及恶劣的天气,使得我们的卫星不能很好的定位怪物,从而不能很好的命中目标。 第一次射击的分析结果会反映在一张由n个点和m条边组成的无向图上。现在让我们来确定这张图 是不是可以被认为是章鱼怪。

    为了简单起见,我们假设章鱼怪的形状是这样,他有一个球形的身体,然后有很多触须连接在他的身上。可以表现为一张无向图,在图中可以被认为由三棵或者更多的树(代表触须)组成,这些树的根在图中处在一个环中(这个环代表球形身体)。

    题目保证,在图中没有重复的边,也没有自环

    思路

    法1:

    按题意用dfs找无向图的环,若找到一个环且整个图是连通的,那么yes。

    法2:

    设环上有k个点,那么那些树除了根节点一共有n-k个点,而x个点的树有x-1条边,现在去掉了他们的根节点,所以有n-k条边,再加上环上有k条边,n-k+k = m。

    所以可以直接判断图是否连通而且n==m。

    代码

    法1:

    #include<bits/stdc++.h>
    using namespace std;
    #define inf 0x3f3f3f3f
    #define ll long long
    const int N=200005;
    const int mod=1e9+7;
    const double eps=1e-8;
    const double PI = acos(-1.0);
    #define lowbit(x) (x&(-x))
    int n,m,in[N],vis[N],flag=0;
    vector<int> g[N];
    void dfs(int u,int fa)
    {
        in[u]=1;
        for(int v:g[u])
        {
            if(!vis[v])
            {
                vis[v]=1;
                dfs(v,u);
            }
            else if(v!=fa&&in[v])
            {
          //      cout<<u<<" "<<v<<" gg"<<endl;
                flag++;
            }
        }
        in[u]=0;
    }
    int main()
    {
        std::ios::sync_with_stdio(false);
        cin>>n>>m;
        for(int i=1;i<=m;i++)
        {
            int u,v;
            cin>>u>>v;
            g[u].push_back(v);
            g[v].push_back(u);
        }
        int cnt=0;
        for(int i=1;i<=n;i++)
        {
            if(!vis[i])
            {
                vis[i]=1;
                dfs(i,0);
                cnt++;
            }
        }
      //  cout<<cnt<<" "<<flag<<endl;
        if(cnt==1&&flag==1)
        {
            cout<<"FHTAGN!"<<endl;
        }
        else
            cout<<"NO"<<endl;
        return 0;
    }
    

    法2:

    #include<bits/stdc++.h>
    using namespace std;
    #define inf 0x3f3f3f3f
    #define ll long long
    const int N=200005;
    const int mod=1e9+7;
    const double eps=1e-8;
    const double PI = acos(-1.0);
    #define lowbit(x) (x&(-x))
    int n,m,vis[N],flag=0;
    vector<int> g[N];
    void dfs(int u)
    {
        for(int v:g[u])
        {
            if(!vis[v])
            {
                vis[v]=1;
                dfs(v);
            }
        }
    }
    int main()
    {
        std::ios::sync_with_stdio(false);
        cin>>n>>m;
        for(int i=1;i<=m;i++)
        {
            int u,v;
            cin>>u>>v;
            g[u].push_back(v);
            g[v].push_back(u);
        }
        int cnt=0;
        for(int i=1;i<=n;i++)
        {
            if(!vis[i])
            {
                vis[i]=1;
                dfs(i);
                cnt++;
            }
        }
        if(cnt==1&&n==m)
        {
            cout<<"FHTAGN!"<<endl;
        }
        else
            cout<<"NO"<<endl;
        return 0;
    }
    

      

    #include<bits/stdc++.h>usingnamespacestd; #define inf 0x3f3f3f3f#define ll long longconstint N=200005; constint mod=1e9+7; constdouble eps=1e-8; constdouble PI = acos(-1.0); #define lowbit(x) (x&(-x))int n,m,in[N],vis[N],flag=0; vector<int> g[N]; void dfs(int u,int fa) { in[u]=1; for(int v:g[u]) { if(!vis[v]) { vis[v]=1; dfs(v,u); } elseif(v!=fa&&in[v]) { // cout<<u<<" "<<v<<" gg"<<endl; flag++; } } in[u]=0; } int main() { std::ios::sync_with_stdio(false); cin>>n>>m; for(int i=1;i<=m;i++) { int u,v; cin>>u>>v; g[u].push_back(v); g[v].push_back(u); } int cnt=0; for(int i=1;i<=n;i++) { if(!vis[i]) { vis[i]=1; dfs(i,0); cnt++; } } // cout<<cnt<<" "<<flag<<endl;if(cnt==1&&flag==1) { cout<<"FHTAGN!"<<endl; } elsecout<<"NO"<<endl; return0; }

  • 相关阅读:
    Hanoi塔
    采药
    进制转换(大数)
    Load Balancing with NGINX 负载均衡算法
    upstream模块实现反向代理的功能
    epoll
    在nginx启动后,如果我们要操作nginx,要怎么做呢 别增加无谓的上下文切换 异步非阻塞的方式来处理请求 worker的个数为cpu的核数 红黑树
    粘性会话 session affinity sticky session requests from the same client to be passed to the same server in a group of servers
    负载均衡 4层协议 7层协议
    A Secure Cookie Protocol 安全cookie协议 配置服务器Cookie
  • 原文地址:https://www.cnblogs.com/mcq1999/p/12002814.html
Copyright © 2011-2022 走看看