题意:

在1976年,四色猜想被一个计算机助手提出,这个理论表示对任意一个地图的上色都只需要四种
颜色,地图内每一个区块和相邻的区块颜色都不相同.
你现在被要求解决一个相似但相对简单的问题.给你任意一个连通的图你必须计算出这个图
是否能够被俩种颜色涂上颜色.意思就是如果一个结点被涂上颜色
(从一个只有俩种颜色的调色板中选取一个颜色),那么相邻的俩个结点都不能有相同的颜色.
为了使问题更加简单,我们保证一下条件.
1:结点不存在自己到自己的边(不存在结点1有条边到结点1)
2:是一个无向图,如果结点a有条边到结点b,可以假设结点b也有条路到结点a
3:是一个强联通图,意思就任意一个结点都有一条路到其他结点.

输入

输入由几组测试用例组成,每一组测试开始的第一行包含一个数字n(1<n<200),表示包含有n个结点.
第二行包含边的数目L,随后L行,每一行包含俩个数字,表示这俩个结点之间有一条边相连接,
图的一个结点使用a标识(0<=a<n),n=0表示输入结束,不用处理.

输出
看输出用例

AC时间:0ms

#include<stdio.h>
#include<iostream>
#include<queue>
#include<memory.h>
using namespace std; const int MAX = ;
void dfs(int r, int *ok, int n, int map[MAX][MAX], int cc, int vis[])
{
if(vis[r] == -)
{
vis[r] = cc;
for(int i = ; i < n; i++)
{
if(map[r][i] !=-)
{
map[r][i] = -;
dfs(i,ok,n,map,(cc+)%,vis);
}
}
}
else if(vis[r] !=cc)
{
*ok = ;
}
}
int main()
{
freopen("d:\\1.txt", "r", stdin);
int n;
string yes = "BICOLORABLE.";
string no = "NOT BICOLORABLE.";
while (cin >> n)
{
if(n == )
{
return ;
}
int l;
cin >> l;
int map[MAX][MAX];
int vis[MAX];
memset(vis, -, sizeof(vis));
memset(map, -, sizeof(map));
int s, t;
for(int i = ; i < l; i++)
{
cin >> s >> t;
map[s][t] = ;
map[t][s] = ;
}
int ok = ;
//深搜
dfs(s, &ok, n, map, , vis);
if(ok)
cout << yes << endl;
else
cout << no << endl;
}
return ;
}

uva-10004-俩色图验证的更多相关文章

  1. UVA 10004 Bicoloring

    题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=12&pa ...

  2. UVa 10004:Bicoloring

    这道题要我们判断所给图是否可以用两种颜色进行染色,即"二染色“.已知所给图一定是强连通图. 分析之: 若图中无回路,则该图是一棵树,一定可以二染色. 若图中有回路,但回路有偶数个节点,仍然可 ...

  3. uva 10004 Bicoloring(dfs二分染色,和hdu 4751代码差不多)

    Description In the ``Four Color Map Theorem" was proven with the assistance of a computer. This ...

  4. Bicoloring UVA - 10004 二分图判断

    \(\color{#0066ff}{题目描述}\) 多组数据,n=0结束,每次一个n,m,之后是边,问你是不是二分图 \(\color{#0066ff}{输入样例}\) 3 3 0 1 1 2 2 0 ...

  5. UVA - 10004 Bicoloring(判断二分图——交叉染色法 / 带权并查集)

    d.给定一个图,判断是不是二分图. s.可以交叉染色,就是二分图:否则,不是. 另外,此题中的图是强连通图,即任意两点可达,从而dfs方法从一个点出发就能遍历整个图了. 如果不能保证从一个点出发可以遍 ...

  6. UVA 10004 Bicoloring(DFS染色)

    题意: 给N个点构成的无环无向图,并且保证所有点对都是连通的. 给每个点染色,要么染成黑要么染成白.问是否存在染色方案使得所有有边相连的点对颜色一定不一样. 是输出 BICOLORABLE 否则输出 ...

  7. uva 交叉染色法10004

    鉴于网上讲交叉染色的资料比较少,于是我把我自己的心得与方法贴出来,方便与大家共同进步. 二分图: 百度百科传送门 wiki百科传送门 判断一个图是否为二分图可以用交叉染色的方法来判断,可以用BFS,也 ...

  8. Android 代理服务器为全网提供代理

    Android 代理服务器为全网提供代理 背景:学校WiFI过滤较严,故学生很少有可以上网账号的.而学校又分为俩层验证,第一层可以注册并且拥有访问校内网的权限,第二层为校内密码验证机(非服务器)进行用 ...

  9. 测试开发系列之Python开发mock接口(三)

    于进入主题了,前面的准备工作都已经做好了,下面就开始写逻辑的代码了,代码我已经写好了,每行都加了注释,不明白的可以留言.   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 ...

随机推荐

  1. [LeetCode&Python] Problem 637. Average of Levels in Binary Tree

    Given a non-empty binary tree, return the average value of the nodes on each level in the form of an ...

  2. (2)bytes类型

    bytes类型就是字节类型 把8个二进制一组称为一个byte,用16进制来表示 Python2里面字符串其实更应该称为字节串,但是python2里面有一个类型是butes,所以在Python2里面by ...

  3. ES6必知必会 (二)—— 字符串和函数的拓展

    字符串的拓展 1.ES6为字符串添加了遍历器接口,因此可以使用for...of循环遍历字符串 2.字符串新增的 includes().startsWith().endsWidth() 三个方法用于判断 ...

  4. socket套接字和驱动绑定分析

    1. socket()系统调用 socket系统调用是哪个:socket()有3个参数,因此搜索SYSCALL_DEFINE3,然后在检索socket即可. SYSCALL_DEFINE3(socke ...

  5. stardog 基本试用(社区版)

    stardog 是一个知识图谱的实现,实现了sparql 以及graphql 协议,使用起来也比较简单,官方文档挺全 下载 社区版,注册之后会有邮件通知,里面会包含license 以及软件包 下载地址 ...

  6. 使用C#和MSMQ开发消息处理程序

    简介 MSMQ(微软消息队列)是Windows操作系统中消息应用程序的基础,是用于创建分布式.松散连接的消息通讯应用程序的开发工具.消息队列和电子邮件有着很多相似处,他们都包含多个属性,用于保存消息, ...

  7. RabbitMQ消息可靠性分析

    消息中间件的可靠性是指对消息不丢失的保障程度:而消息中间件的可用性是指无故障运行的时间百分比,通常用几个 9 来衡量.不存在绝对的可靠性只能尽量趋向完美.并且通常可靠性也意味着影响性能和付出更大的成本 ...

  8. enjoy dollar vs cash dollar

    當 enJoy 卡 客 戶 憑 enJoy 卡 於 enJoy 卡 「 特 約 商 戶 」 簽 賬 消 費 , 累 積 之 enJoy Dollars 及 Cash Dollars 可 在 同 一 交 ...

  9. 【转】每天一个linux命令(3):pwd命令

    原文网址:http://www.cnblogs.com/peida/archive/2012/10/24/2737730.html Linux中用 pwd 命令来查看”当前工作目录“的完整路径. 简单 ...

  10. HBase常用指令

    disable 'smsFlow'drop 'smsFlow'create 'smsFlow','info','partition'count 'smsFlow'scan 'smsFlow' trun ...