• Luogu P2731 骑马修栅栏 Riding the Fences(欧拉回路模板)


    gate

    保证有欧拉回路,输出路径

    这道题的话是字典序,实现的时候从1到n枚举就好了,先不管它qwq

    找到度数为奇数的的点作为起点(没有的话就任意一个),

    dfs,回溯时把点压进栈。

    为什么不能遍跑dfs边压?考虑这张图:

    边跑边压的结果是1,2,3,2,4,5,而正解(回溯)是1,2,4,5,2,3

    代码如下

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    #include<cstring>
    #define MogeKo qwq
    using namespace std;
    
    const int maxn = 505;
    int m,x,y,s,cnt,to[maxn][maxn],inn[maxn],ans[maxn];
    
    void dfs(int x) {
        for(int i = 1; i <= 500; i++)
            if(to[x][i]) {
                to[x][i]--;
                to[i][x]--;
                dfs(i);
            }
        ans[++cnt] = x;
    }
    
    int main() {
        scanf("%d",&m);
        for(int i = 1; i <= m; i++) {
            scanf("%d%d",&x,&y);
            to[x][y]++;
            to[y][x]++;
            inn[x]++;
            inn[y]++;
        }
        s = 1;
        for(int i = 1; i <= 500; i++)
            if(inn[i]%2 != 0) {
                s = i;
                break;
            }
        dfs(s);
        for(int i = cnt; i; i--)
            printf("%d
    ",ans[i]);
        return 0;
    }
    View Code
  • 相关阅读:
    sublime生成html快捷标签布局
    vue.js选项卡动态组件
    textarea内容限制字数
    60s验证等待
    vue.js显示隐藏
    CSS强制性换行
    Ultra Pull To Refresh下拉刷新
    Open经验库网址
    Fresco实例
    解决LinearLayout中控件不能居右对齐
  • 原文地址:https://www.cnblogs.com/mogeko/p/11863593.html
Copyright © 2020-2023  润新知