您的位置:首页 > 其它

uva 10004 Bicoloring (二分图染色/求一个二分图)

2016-08-18 09:43 465 查看
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxn=205;
int maps[maxn][maxn];
int vis[maxn],color[maxn];
int n,l,ans;
void init()
{
memset(maps,0,sizeof(maps));
memset(vis,0,sizeof(vis));
memset(color,0,sizeof(color));
ans=vis[0]=color[0]=1;
}
void dfs(int u)
{
for(int i=0;i<n;i++)
{
if(maps[u][i])
{
if(vis[i]==0)
{
vis[i]=1;
color[i]=!color[u];
dfs(i);
}
else if(color[i]==color[u])
{
ans=0;
return ;
}
}
}
}
int main()
{
while(~scanf("%d",&n))
{
if(n==0)    break;
scanf("%d",&l);
init();
for(int i=0;i<l;i++)
{
int a,b;    scanf("%d%d",&a,&b);
maps[a][b]=maps[b][a]=1;
}
dfs(0);
if(ans)
printf("BICOLORABLE.\n");
else
printf("NOT BICOLORABLE.\n");
}
}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: