zoukankan      html  css  js  c++  java
  • 求欧拉路径模版 fleury算法

    支持多重边,按字典序输出。

    #include<bits/stdc++.h>
    #define REP(i,a,b) for(int i=a;i<=b;i++)
    #define MS0(a) memset(a,0,sizeof(a))
    
    using namespace std;
    
    typedef long long ll;
    const int maxn=510;
    const int INF=1e9+10;
    
    int n,m;
    int G[maxn][maxn];
    int stk[maxn*3],top;
    int path[maxn],pcnt;
    int deg[maxn];
    int u,v;
    
    void dfs(int u)
    {
        stk[++top]=u;
        REP(v,1,n){
            if(G[u][v]){
                G[u][v]--;G[v][u]--;
                dfs(v);break;
            }
        }
    }
    
    void fleury(int s)
    {
        pcnt=0;
        top=0;stk[++top]=s;
        while(top>0){
            int flag=1;
            REP(v,1,n){
                if(G[stk[top]][v]){
                    flag=0;break;
                }
            }
            if(flag) path[++pcnt]=stk[top--];
            else dfs(stk[top--]);
        }
    }
    
    int main()
    {
        cin>>n>>m;
        REP(i,1,m){
            scanf("%d%d",&u,&v);
            G[u][v]++;G[v][u]++;
            deg[u]++;deg[v]++;
        }
        int ss=0,num=0;
        REP(i,1,n){
            if(deg[i]%2){
                num++;
                if(ss==0) s=i;
            }
        }
        if(num==0||num==2) for(int i=pcnt;i>=1;i--) printf("%d ",path[i]);puts("");
        else puts("-1");
        return 0;
    }
    View Code
    没有AC不了的题,只有不努力的ACMER!
  • 相关阅读:
    javascript 延迟
    ashx获取另一个页面的返回内容
    Handler实现数据模板
    font-face 在 Firefox无法正常工作问题
    离线缓存 manifest
    事件 event
    源码学习
    调试
    Icon font font face
    aria-label
  • 原文地址:https://www.cnblogs.com/--560/p/5187707.html
Copyright © 2011-2022 走看看