有向图的欧拉回路判定问题 poj1386

博客探讨了有向图中欧拉回路的判定条件,包括图的连通性检查,利用并查集实现,以及节点出度和入度的平衡策略。文章指出在连通图中,当每个节点的出度等于入度,或者仅存在两个节点的出度与入度之差为±1时,可能存在欧拉回路。
摘要由CSDN通过智能技术生成

这个题也卡卡卡,发现自己好粗心,唉.。

有向图的判定:

统计每个点的出度和入度,

前提是有向图是连通图。
1. 如果每个点的出度 = 入度 则存在欧拉回路。
2. 如果有且仅有两点出度、入度不想等,且这两个点的出度 - 入度差为1 或 -1.差为1的那个点是欧拉图的起点,为 -1 的是重点。

这个题先来判断图的连通性,用并查集的方法,值得注意的一点是并查集是以点为元素的,所以要开26长度的数组。
在接下来就是判断出度和入度了。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
using namespace std;
const int MAXN = 1e5 + 10;
int father[30]; 
int _rank[30];
int d1[30]; // 出度
int d2[30]; // 入度
bool h[MAXN]; // 判断是否出现边中
void init()
{
    for(int i = 1;i <= 26;++i)
    {
        father[i] = i;
        _rank[i] = 0;
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值