您的位置:首页 > 其它

UVA 10004 - Bicoloring(DFS)

2012-07-03 11:07 399 查看
题目链接

好假啊,1Y,我本以为会超时的,看来数据小啊。。。。在经过各种压线之后,目测这个学期不会挂科,淡定,实习完,继续刷题!!!

#include <stdio.h>
#include <string.h>
int p[201][201],o[201],n,z;
void dfs(int x,int y)
{
int i;
if(z) return ;
o[x]  = y;;
for(i = 0;i <= n;i ++)
{
if(p[x][i] )
{
p[x][i] = 0;
if(o[i] == 0)
{
if(y == 1)
dfs(i,2);
else if(y == 2)
dfs(i,1);
}
else if(o[i] == y)
{
z = 1;
break;
}
}
}
return ;
}
int main()
{
int i,sv,ev,m;
while(scanf("%d",&n)!=EOF)
{
if(n == 0)break;
z = 0;
memset(p,0,sizeof(p));
memset(o,0,sizeof(o));
scanf("%d",&m);
for(i = 1;i <= m;i ++)
{
scanf("%d%d",&sv,&ev);
p[sv][ev] = 1;
p[ev][sv] = 1;
}
dfs(0,1);
if(z)
printf("NOT BICOLORABLE.\n");
else
printf("BICOLORABLE.\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: