zoukankan      html  css  js  c++  java
  • 求欧拉回路的算法学习

    在求解欧拉回路的问题中我们可以采用fleury算法。

     然而在进行算法竞赛时,如果只是求欧拉回路我们可以采用DFS进行实现,需要注意的小细节时在输出边时需要在回溯阶段逆向输出因为遇到 1->2->3->2->1这种图会出现走死路情况

    来看道例题:

    UVA10054

    #include <bits/stdc++.h>
    using namespace std;
    const int N = 55;
    int g[N][N];
    int d[N];
    int n;
    void euler(int u) {
        for(int v = 1; v <= 50; ++v){
            if(g[u][v]) {
                g[u][v]--;
                g[v][u]--;
                euler(v);
                printf("%d %d
    ", v, u);    //一定是逆序输出
            }
        }
    }
    
    
    int main () {
        int T;
        scanf("%d", &T);
        for(int t = 1; t <= T; ++t) {
            int u, v;
            memset(g, 0, sizeof g);
            memset(d, 0, sizeof d);
            scanf("%d", &n);
            for(int i = 1; i <= n; ++i){
                scanf("%d%d", &u, &v);
                d[u]++; 
                d[v]++;
                g[u][v]++;  
                g[v][u]++;
            }
            printf("Case #%d
    ", t);
            bool is = 1;
            for(int j = 1; j <= 50; ++j) {
                if(d[j] % 2) {
                    is = 0;
                    break;
                }
            }
            if(!is) {
                // printf("some heads may be lost
    ");
                printf("some beads may be lost
    ");
            }
            else {
                for(int i = 1; i <= 50; ++i) {
                     euler(i);
                }
            }
            if(t != T) {
                printf("
    ");
            }
        }
    }
    
    
    
    作者:LightAc
    出处:https://www.cnblogs.com/lightac/
    联系:
    Email: dzz@stu.ouc.edu.cn
    QQ: 1171613053
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    POJ Problem 1363 Rails 【栈】
    POJ Problem 3040 Allowance 【贪心】
    ACM 程序对拍
    HDU Problem
    POJ
    HDU Problem
    HDU Problem—2124 Repair the Wall 【贪心】
    HDU Problem 1052 Tian Ji -- The Horse Racing 【贪心】
    POJ Problem Radar Installation 【贪心】
    Beyond Compare和输出文件比较的方法
  • 原文地址:https://www.cnblogs.com/lightac/p/12599397.html
Copyright © 2011-2022 走看看