判断一个图是否可以由2种颜色染色。
#include<iostream>
#include<vector>
using namespace std;
#define MAXV 500
int V;
int color[MAXV];
vector<int>G[MAXV];
int dfs(int v,int c)
{
color[v]=c;
int i;
for(i=0;i<G[v].size();i++)
{
if(G[v][i]==c)
return 0;
if(G[v][i]==0&&!dfs(i,-c))
return 0;
}
return 1;
}
void solve()
{
int i;
for(i=0;i<V;i++) //万一不连通
if(color[i]==0)
{
if(!dfs(i,1))
{
printf("NO\n");
return;
}
}
printf("YES\n");
}