Bicoloring 二分图+染色

时间:2023-03-09 06:54:11
Bicoloring 二分图+染色

https://vjudge.net/contest/281085?tdsourcetag=s_pcqq_aiomsg#problem/B

 #include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<stdlib.h>
#include<algorithm>
#include<queue>
#include<vector>
#include<string>
#include<set>
#include<cctype>
#include<sstream>
#define mem(a) memset(a,0,sizeof(a))
#define LL long long
#define inf 0x3f3f3f3f
using namespace std;
const int N=1e3+;
int color[N],link[N][N];
int n,m;
bool dfs(int v,int c)
{
color[v]=c;
for(int i=;i<n;i++)
{
if(link[v][i]) //查找所有邻近的
{
if(color[i]==c)
return false;
if(color[i]==&&!dfs(i,-c))
return false;
}
}
return true;
}
void solve()
{
for(int i=;i<n;i++)
{
if(color[i]==)
{
if(!dfs(i,))
{
printf("NOT BICOLORABLE.\n");return;
}
}
}
printf("BICOLORABLE.\n");//return;
}
int main()
{
int a,b;
while(~scanf("%d",&n)&&n)
{
mem(color);
mem(link);
scanf("%d",&m);
for(int i=;i<m;i++)
{
scanf("%d %d",&a,&b);
link[a][b]=; //注意双向
link[b][a]=;
}
solve();
}
return ;
}