[C++]二分图判定

[C++]二分图判定

二分图判定:
给定一个具有n个顶点的图。要给图上每个顶点染色,并且使相邻的顶点颜色不同。问是否能用2种颜色进行染色?题目保证没有重边和闭环。
输入格式:
顶点数n 边数m
m行边顶点到终点
输出格式:
Yes或No

输入:
3 3
0 1
0 2
1 2
输出:
No

输入:
4 4
0 1
0 3
1 2
2 3
输出:
Yes

解题思路:此题可用dfs遍历图,依次确认到达点是否填补颜色与种类。比起图染色问题,只用了2种颜色,那么一个点确认了颜色,则相邻的点颜色都确认了。

#include
#include
using namespace std;

const int maxn = 1010;

vector vec[maxn];
int n, m;
int color[maxn];

int dfs(int x, int c){
	color[x] = c;
	
	for(int i = 0; i>n>>m;

	for(int i = 0; i>a>>b;
		
		vec[a].push_back(b);
		vec[b].push_back(a);
	}
	
	for(int i = 0; i

你可能感兴趣的:(刷题之旅,算法,dfs,c++)