• AcWing1184 欧拉回路


    模板题,但是有大量重边和自环,数据很坑,需要加引用优化

    #include<bits/stdc++.h>
    using namespace std;
    const int N=4e5+10;
    int h[100010],ne[N],e[N],idx;
    int ans[N];
    int used[N];
    int t,n,m;
    int din[N],dout[N];
    int cnt;
    void add(int a,int b){
        e[idx]=b,ne[idx]=h[a],h[a]=idx++;
    }
    void dfs(int u){
        for(int &i=h[u];i!=-1;){
            if(used[i]){
                i=ne[i];
                continue;
            }
            used[i]=1;
            if(t==1)
            used[i^1]=1;
            int x;
            if(t==1){
                x=i/2+1;
                if(i&1)
                x=-x;
            }
            else{
                x=i+1;
            }
            int j=e[i];
            i=ne[i];
            dfs(j);
            ans[++cnt]=x;
            
        }
    }
    int main(){
        ios::sync_with_stdio(false);
        cin>>t>>n>>m;
        int i;
        memset(h,-1,sizeof h);
        for(i=1;i<=m;i++){
            int a,b;
            cin>>a>>b;
            add(a,b);
            if(t==1)
                add(b,a);
            din[b]++,dout[a]++;
        }
        if(t==1){
            for(i=1;i<=n;i++){
                if((din[i]+dout[i])%2!=0){
                    cout<<"NO"<<endl;
                    return 0;
                }
            }
        }
        else{
            for(i=1;i<=n;i++){
                if(din[i]!=dout[i]){
                    cout<<"NO"<<endl;
                    return 0;
                }
            }
        }
        for(i=1;i<=n;i++){
            if(h[i]!=-1){
                dfs(i);
                break;
            }
        }
        if(cnt<m){
            cout<<"NO"<<endl;
        }
        else{
            cout<<"YES"<<endl;
            for(i=cnt;i>=1;i--){
                cout<<ans[i]<<" ";
            }
            cout<<endl;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    如何在TVM上集成Codegen(上)
    CodeGen准备存储库
    CodeGen按钮循环
    CodeGen标记循环
    CodeGen结构循环回路
    CodeGen处理Synergy方法目录
    回顾6 单点登录
    回顾 five 幂等性
    回顾 four Object
    程序员的数学基础课 笔记6
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/13221488.html
Copyright © 2020-2023  润新知