您的位置:首页 > 其它

二分图判定 DFS版

2017-04-08 17:17 323 查看
二分图BFS版
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <vector>
#include <cstring>
#define MAX_N 2005
using namespace std;
vector<int> G[MAX_N];
int V,E,vis[MAX_N],flag=1;
void dfs(int cur)
{
for(int i = 0; i < G[cur].size(); i++)
{
int y = G[cur][i];
if(vis[y] == 0)
{
vis[y] = (vis[cur] == 1 ? -1 : 1);
dfs(y);
}
else if(vis[y] == vis[cur])
{
flag = 0;
return ;
}
}
}
int main()
{
scanf("%d %d", &V, &E);
for(int i = 1; i <= E; i++)
{
int a,b;
scanf("%d %d", &a, &b);
G[a].push_back(b);
G[b].push_back(a);
}
memset(vis,0,sizeof(vis));
vis[1]=1;
dfs(1);
if(flag) printf("Yes\n");
else printf("No\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: