欧拉路 / 回路 / 有向/ 无向 / 字典顺序

博客探讨了欧拉路在无向图和有向图中的条件,包括欧拉回路和欧拉路的定义,并提供了判断欧拉路存在的算法。此外,还介绍了如何按字典顺序输出有向图的欧拉路,涉及并查集和递归等数据结构与算法。
摘要由CSDN通过智能技术生成
/**
    欧拉路就是一笔画问题,同时会衍生出好多问题
    比如:单词接龙,就是给一堆英文单词,问是否能让其首尾相接
    排成一列
    这样可将每个单词看成一条边,首尾字母看成点,求是否存在一
    条欧拉路

    一、无向图
    欧拉回路:每个顶点入度都是偶数
    欧拉路:所有点度数为偶数或者只有两个点度数为奇数
    二、有向图
    欧拉回路:每个点入度等于出度
    欧拉路:每个点入度等于出度或只有一个点入度比出度小1(从这个
    点出发),只有一个点出度比入度小1(从这个点结束),其它点
    入度等于出度。

    例子:按字典顺序输出有向图的欧拉路

    struct node {
        int u, v;
        int vis;  //是否访问过,初始为0
        int w;    //边权,w可以使任意类型,当然也可以使字符串
    }edge[eM];    //存边

    int n, m;     //表示点的个数,边得个数

    int in[nM], out[nM], root[nM], path[nM];
    //入度,出度,并查集用,记录路径

    //初始化,除root,其余都赋值为零
    for (int i=0; i<=n; i++)
        root[i] = i;   //root 初始化,并查集用

    //添边操作
    int k = 0; //k的个数最后赋给m
    void addEdge(int u, int v, int w) {
        edge[k].u = u;
        edge[k].v = v
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值