uva 10004 Bicoloring(二染色)
2015-07-22 16:09
260 查看
这道题我始终还是看了题解,不过有进步的是我看了他的想法自己实现的,恩恩,就是要这样 ,一定得先有个正确的
想法,这样才能做对题,敲代码之前想法就错了那么一定做不对题目的,我之前想的是只要存在环就不会实现去全部染
色,其实是可以的,当这个环是奇数的时候就可以,偶数的时候不可以。所以我用的dfs每次遍历的时候遇到没有染色
的就染色,遇到染过色的就判断一下是否是一样的颜色。
贴代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int visit[205];
int map[205][205];
int m,n,flag;
void dfs(int x)
{
for(int i=0; i<n; i++)
{
if(map[x][i]==1)
{
if(visit[i]!=0)
{
if(visit[i]==visit[x])
{
flag = 0;
return;
}
}
else
{
if(visit[x]==2)
visit[i] = 3;
else
visit[i] = 2;
dfs(i);
}
}
}
return ;
}
int main()
{
int i,x,y;
while(scanf("%d",&n),n!=0)
{
memset(visit,0,sizeof(visit));
memset(map,0,sizeof(map));
scanf("%d",&m);
for(i=0; i<m; i++)
{
scanf("%d%d",&x,&y);
map[x][y]=map[y][x]=1;
}
for(i=0; i<n; i++)
{
flag = 1;
if(visit[i]==0)
{
visit[i] = 2;
dfs(i);
}
if(flag == 0)
{
break;
}
}
if(flag)
puts("BICOLORABLE.");
else
puts("NOT BICOLORABLE.");
}
return 0;
}
想法,这样才能做对题,敲代码之前想法就错了那么一定做不对题目的,我之前想的是只要存在环就不会实现去全部染
色,其实是可以的,当这个环是奇数的时候就可以,偶数的时候不可以。所以我用的dfs每次遍历的时候遇到没有染色
的就染色,遇到染过色的就判断一下是否是一样的颜色。
贴代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int visit[205];
int map[205][205];
int m,n,flag;
void dfs(int x)
{
for(int i=0; i<n; i++)
{
if(map[x][i]==1)
{
if(visit[i]!=0)
{
if(visit[i]==visit[x])
{
flag = 0;
return;
}
}
else
{
if(visit[x]==2)
visit[i] = 3;
else
visit[i] = 2;
dfs(i);
}
}
}
return ;
}
int main()
{
int i,x,y;
while(scanf("%d",&n),n!=0)
{
memset(visit,0,sizeof(visit));
memset(map,0,sizeof(map));
scanf("%d",&m);
for(i=0; i<m; i++)
{
scanf("%d%d",&x,&y);
map[x][y]=map[y][x]=1;
}
for(i=0; i<n; i++)
{
flag = 1;
if(visit[i]==0)
{
visit[i] = 2;
dfs(i);
}
if(flag == 0)
{
break;
}
}
if(flag)
puts("BICOLORABLE.");
else
puts("NOT BICOLORABLE.");
}
return 0;
}
相关文章推荐
- Java程序打包成jar包
- 2015年Objective-C有哪些新功能?
- 会话EJB系列(六)依赖注入
- HDU 3652 B-number (简单数位DP)
- poj3087
- json - java对象<-->json
- python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法
- harris 算法python实现
- 什么是首次适应算法,该算法的特点是什么?
- 国家商用密码(四)开放动态库及演示程序
- POJ 3660
- LeetCode 8 - String to Integer (atoi)
- PHP技术开发微信公众平台
- 作为计算机行业新人的思考
- coc游戏服务器架构分析
- 实现简单的MVC模式,通过一个小例子,不是很完美,但是可以说明一部分的问题
- .Net学习笔记----2015-07-22(C#基础复习10,面向对象2个小练习)
- C语言,题目:函数调用,内存,malloc找错
- LeetCode
- oracle语句块