您的位置:首页 > 其它

UVA 10004 Bicoloring

2011-09-09 17:58 477 查看
UVA_10004[/b]

对于这个题目,我们可以直接模拟染色的过程即可,如果发现要涂某一块时这个块已经被涂了色,并且与我们要使用的颜色不同的话,就说明这个图不能被染成BICOLORABLE的。

#include<stdio.h>
#include<string.h>
int G[210][210],q[210],paint[210],n;
int dfs(int u,int color)
{
int v;
for(v=0;v<n;v++)
if(G[u][v])
{
if(paint[v]!=-1&&paint[v]!=color)
return 0;
else if(paint[v]==-1)
{
paint[v]=color;
if(!dfs(v,1-color))
return 0;
}
}
return 1;
}
int main()
{
int i,j,k,m,u,v,front,rear;
while(1)
{
scanf("%d",&n);
if(n==0)
break;
scanf("%d",&m);
memset(G,0,sizeof(G));
for(i=0;i<m;i++)
{
scanf("%d%d",&u,&v);
G[u][v]=G[v][u]=1;
}
memset(paint,-1,sizeof(paint));
paint[0]=0;
if(dfs(0,1))
printf("BICOLORABLE.\n");
else
printf("NOT BICOLORABLE.\n");
}
return 0;
}


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