算法笔记--二分图判定

Posted Wisdom+.+

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法笔记--二分图判定相关的知识,希望对你有一定的参考价值。

挑战程序设计p97

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ls rt<<1,l,m
#define rs rt<<1|1,m+1,r
const int INF=0x3f3f3f3f;
const int N=1e5+5;
vector<int>g[N];
int color[N]={0};
bool dfs(int u, int c)
{
    color[u]=c;
    for(int i=0;i<g[u].size();i++)
    {
        if(color[g[u][i]]==c)return false;
        if(color[g[u][i]]==0&&!dfs(g[u][i],-c))return false;
    }
    return true;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        int t;
        cin>>t;
        while(t--)
        {
            int a;
            cin>>a;
            g[i].push_back(a);
        }
    }
    bool flag=dfs(0,1);
    if(flag)cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
    return 0;
}

 

以上是关于算法笔记--二分图判定的主要内容,如果未能解决你的问题,请参考以下文章

二分图的判定(染色法)和二分图最大匹配(匈牙利)算法及模板

HDU - 2444 The Accomodation of Studentsp[二分图判定,匈牙利算法]

图论算法二分图:染色法与匈牙利算法

B - Bicoloring (二分图判定)

AcWing 860. 染色法判定二分图(染色法)

二分图判定