• 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;
    }

    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    MyBatis+MySQL 返回插入的主键ID
    微信被动回复用户消息-文本消息-springmvc环境下自动生成xml
    微信自动回复消息示例
    微信自定义菜单
    微信获取二维码
    微信被动回复用户消息-文本消息-填坑
    微信获得access-token
    设置ckeditor的高度
    Java三行代码搞定MD5加密
    Highchart
  • 原文地址:https://www.cnblogs.com/ldudxy/p/10604660.html
Copyright © 2020-2023  润新知