• 求欧拉回路的算法学习


    在求解欧拉回路的问题中我们可以采用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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    javascript性能
    图片及js的预加载
    url参数解析
    javascript预编译
    13、MVC 设计思想
    12、JDBC 流程
    线程-2、sleep() 、join()、yield()有什么区别
    线程-1、创建线程的方式及实现
    集合-7、HashMap实现原理及源码分析
    集合-6、HashSet 和 HashMap 区别
  • 原文地址:https://www.cnblogs.com/lightac/p/12599397.html
Copyright © 2020-2023  润新知