码迷,mamicode.com
首页 > 编程语言 > 详细

算法笔记--二分图判定

时间:2017-07-28 15:37:18      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:turn   back   namespace   const   算法   cout   ack   log   dfs   

挑战程序设计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;
}

 

算法笔记--二分图判定

标签:turn   back   namespace   const   算法   cout   ack   log   dfs   

原文地址:http://www.cnblogs.com/widsom/p/7250192.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!