#P1089. 【模板】二分图判定(染色)
显示设置
本题导航点一下展开
我的笔记
✕
【模板】二分图判定(染色)
题目描述
给定一张 个点、 条边的无向图,结点编号 。图中允许多重边与自环,且图不一定连通。
如果能够把所有点分成两个集合,使得每条边的两个端点分别落在不同集合中,就称这张图是二分图。请你判断这张图是不是二分图;如果是,再给出一组具体的染色方案。
输入格式
第一行两个整数 。
接下来 行,每行两个整数 ,表示一条连接 与 的无向边。
输出格式
如果不是二分图,输出一行 NO。
如果是二分图,第一行输出 YES。
第二行输出 个整数,第 个数为结点 的颜色( 或 )。为了统一答案,规定:按编号从小到大扫描,遇到尚未染色的点就把它染成 ,然后用 BFS 传播颜色(于是每个连通块中编号最小的点颜色都是 )。
输入输出样例 #1
输入 #1
4 4
1 2
2 3
3 1
4 3
输出 #1
NO
输入输出样例 #2
输入 #2
5 4
1 2
2 3
3 4
1 5
输出 #2
YES
0 1 0 1 1
说明
数据范围
- 对于 的数据,,。