zoukankan      html  css  js  c++  java
  • Atcoder Grand Contest 032C(欧拉回路,DFS判环)

    #include<bits/stdc++.h>
    using namespace std;
    int vis[100007];
    vector<int>v[100007];
    vector<int>vt;
    int deg[100007];
    void dfs(int a,int nev){//dfs判环
        for(auto&x:v[a]){
            if(!vis[x]&&x!=nev){//如果有不经过另一个度数为4的环,则图中定有三个环
                vis[x]=1;
                dfs(x,nev);
            }
        }
    }
    int main(){
        int n,m;
        scanf("%d%d",&n,&m);
        int a=0,b=0;
        for(int i=1;i<=m;i++){
            scanf("%d%d",&a,&b);
            v[a].push_back(b);
            v[b].push_back(a);
            deg[a]++;
            deg[b]++;
        }
        int flag=0;
        for(int i=1;i<=n;i++){
            if(deg[i]%2==1){//不是欧拉图直接否定
                printf("No");
                return 0;
            }
            if(deg[i]>=6)//度数大于等于6一定有三个环
                flag=1;
            if(deg[i]>=4)//分类讨论
                vt.push_back(i);
        }
        if(flag){
            printf("Yes");
            return 0;
        }
        else{
            if(vt.size()==2){//如果两个为度数为4的点之间有环
                dfs(vt[0],vt[1]);
                if(vis[vt[0]]){//有环
                    printf("Yes");
                    return 0;
                }
            }
            else if(vt.size()>2){//图中有两个以上度数为4的点图中必定有三个环
                printf("Yes");
                return 0;
            }
        }
        printf("No");
        return 0;
    }

    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    报错信息
    交通
    安装Charles代理
    安装Phabricator
    缓存更新问题
    最好的学习资料在官网
    mysql安装
    git使用
    vbox的centos系统挂载win共享目录做web目录www用户权限问题
    一句话解决windows下quick-cocos2d-x中player3打开黑屏问题
  • 原文地址:https://www.cnblogs.com/ldudxy/p/10604660.html
Copyright © 2011-2022 走看看