zoukankan      html  css  js  c++  java
  • CF #405 (Div. 2) B. Bear ad Friendship Condition (dfs+完全图)

    题意:如果1认识2,2认识3,必须要求有:1认识3.如果满足上述条件,输出YES,否则输出NO.

    思路:显然如果是一个完全图就输出YES,否则就输出NO,如果是无向完全图则一定有我们可以用dfs来书边和点

    n个节点的有向完全图边数为e=n*(n-1)

    代码:

    #include <bits/stdc++.h>
    #define maxn 150000
    #define ll long long
    using namespace std;
    
    vector <int> k[maxn+5];
    bool visit[maxn+5];
    int t;
    
    void dfs(int x,int &v,int &e)
    {
        assert(!visit[x]);
        v++;
        visit[x]=true;
        e+=k[x].size();
        for(int i=0;i<k[x].size();i++)
        {
            if(visit[k[x][i]]==0)
            dfs(k[x][i],v,e);
        }
    }
    
    int main()
    {
        int n,m;
        while(cin>>n>>m)
        {
            for(int i=0;i<m;i++)
            {
                int x,y;
                scanf("%d %d",&x,&y);
                k[x].push_back(y);
                k[y].push_back(x);
            }
            for(int i=1;i<=n;i++)
            {
                if(!visit[i])
                {
                    int v=0,e=0;
                    dfs(i,v,e);
                    if(e!=(long long) v*(v-1))
                    {
                        cout<<"NO"<<endl;
                        return 0;
                    }
                }
            }
            cout<<"YES"<<endl;
        }
        return 0;
    }
  • 相关阅读:
    装饰器
    FLASK
    Flask第一个实例
    各种各样的PyQt测试和例子
    项目实战:天气信息查询
    窗口设置、QSS
    槽和信号
    布局
    打印机
    菜单栏、工具栏、状态栏
  • 原文地址:https://www.cnblogs.com/simplekinght/p/6618620.html
Copyright © 2011-2022 走看看