南阳理工1015 (染色法判断二分图)

二部图

时间限制:1000 ms  |  内存限制:65535 KB

难度:1

描述

二部图又叫二分图,我们不是求它的二分图最大匹配,也不是完美匹配,也不是多重匹配,而是证明一个图是不是二部图。证明二部图可以用着色来解决,即我们可以用两种颜色去涂一个图,使的任意相连的两个顶点颜色不相同,切任意两个结点之间最多一条边。为了简化问题,我们每次都从0节点开始涂色

输入

输入:
多组数据
第一行一个整数 n(n<=200) 表示 n个节点
第二行一个整数m 表示条边
随后 m两个整数 u , v 表示一条边

输出

如果是二部图输出 BICOLORABLE.否则输出 NOT BICOLORABLE.

样例输入

3

3

0 1

1 2

2 0

3

2

0 1

0 2

样例输出

NOT BICOLORABLE.

BICOLORABLE.

 

 

题目就是叫你判断是否为二分图。而且是模拟染色过程。

判断二分图,用染色法就可以。把第一个点颜色标记为黑色,与之相邻的点颜色就为白色,并把这些点加入队列。

重复这个过程。

过程中只会有3种情况

1.如果节点没有染过色,就染上与它相反的颜色,推入队列,

2.如果节点染过色且相反,忽视掉

3.如果节点染过色且与父节点相同,证明不是二分图,结束


#include<iostream>
#include<cstdio>
#include<cstring>
#include<functional>
#include<algorithm>
#include<vector>
#include<queue>
#define maxn 305
using namespace std;
vector<int >maps[maxn];
int color[maxn];
int n,m;
void init()
{
	memset(color,0,sizeof(color));
	for(int i=0;i<=n;i++)
		maps[i].clear();
}
int dyeing()//染色过程
{
	int v1,v2;
	queue<int>que;
	color[0]=1;
	que.push(0);
	while(que.size())
	{
		v1=que.front();
		que.pop();
		for(int i=0;i<maps[v1].size();i++)
		{
			v2=maps[v1][i];
			if(color[v2]==0)//情况1
			{
				color[v2]=-color[v1];
				que.push(v2);
			}
			else if(color[v2]!=0&&color[v2]==color[v1])//情况3
				return 0;
		}
	}
	return 1;
}
int main()
{
	int i,a,b;
	while(scanf("%d%d",&n,&m)!=EOF)
	{
		for(i=1;i<=m;i++)
		{
			scanf("%d%d",&a,&b);
			maps[a].push_back(b);//邻接表
			maps[b].push_back(a);//无向图
		}
		if(dyeing())
			printf("BICOLORABLE.\n");
		else
			printf("NOT BICOLORABLE.\n");
	}
}


 

 

 

 

全部评论

相关推荐

“无名小卒,还是名扬天下?”我知道很多人都不觉得我能走到今天这一步,当然,也包括我自己。在我的人生里,有两部作品刻下了最深的烙印:《斗破苍穹》与《龙族》。它们总被人拿来对照:一边是萧炎的桀骜轻狂,一边是路明非的怯懦衰颓。有人说,天蚕土豆没见过魂天帝,但江南见过真凯撒。我时常觉得,自己就是那个衰小孩路明非。可路明非可以开挂,我不可以;我也无数次幻想过,能拥有萧炎那般年少轻狂的人生,可我没有他与生俱来的逆天天赋。我只是个平庸的普通人,一个看过《斗破苍穹》却开不了挂的路明非,只能一步一步往上爬。从我下定决心找实习的那一刻起,我就给自己定下了目标:“我一定要为字节跳动卖命.jpg”。萧炎有他的三年之约,我有我的两年半之约(其实是一年半)。2024.11.20,科大讯飞的第一封实习offer落进邮箱,我迈出了这场奔赴的第一步。2025.8.18,放弃百度转正的安稳机会,转身走进前路未卜的不确定里。2025.11.14,我选择走进字节跳动,以实习生的身份重新出发。2026.3.25&nbsp;-&nbsp;3.31,一周速通上海飞书,幸遇赏识我的伯乐,斩获Special&nbsp;Offer。被告知面试通过的那一刻,我的内心无比平静,就像这个offer本就该属于我。不是侥幸,是应得的。这一路,有人看轻过我的出身,不相信我能走到这里;也有人在我看不见前路的时候,替我举过灯。没有他们的鼓励与支撑,就没有今天站在这里的我。我看到了自强不息的激荡,那是一个双非的伟大乐章!我是雨夜迈巴赫,我要开启属于我的新篇章了。
在看牛客的本杰明很勇...:真心祝贺l总 我永远的偶像 我滴神
春招至今,你收到几个面试...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务