染色法判别二分图

这篇博客是大雪菜课程的笔记,主要讲解如何用染色法判断一个无向图是否为二分图。内容包括AcWing860题目的解法,该题目要求在O(n+m)的时间复杂度内解决,其中n和m分别为点数和边数。给定可能存在重边和自环的无向图,如果图是二分图则输出"Yes",否则输出"No”。
摘要由CSDN通过智能技术生成

大雪菜的课(笔记)

搜索与图论(三)

3.染色法判别二分图

(1).模板(染色法判别二分图 —— 模板题 AcWing 860. 染色法判定二分图)

时间复杂度是 O(n+m)O(n+m), nn 表示点数,mm 表示边数

int n;      // n表示点数
int h[N], e[M], ne[M], idx;     // 邻接表存储图
int color[N];       // 表示每个点的颜色,-1表示未染色,0表示白色,1表示黑色

// 参数:u表示当前节点,c表示当前点的颜色
bool dfs(int u, int c)
{
   
    color[u] = c;
    for (int i = h[u]; i != -1; i = ne[i])
    {
   
        int j = e[i];
        if (color[j] == -1)
        {
   
            if (!dfs
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值