总括
简单的来说在先前的博客中提到过的BFS DFS 就是图论的搜索算法只是为加以提及。
现在我们通过一道题来从新学习一下搜索: 二分图的判定
·
·
给定固有N个顶点的图。 要给这N个顶点涂上颜色, 并且使相邻顶点颜色不同。
问是能否使用最多2种颜色进行染色?题目保证没有重边和自环
分析
把相邻顶点染成不同颜色的问题叫做图的着色问题。 对图进行染色所需要的最小的颜色数称为最小着色数。
最小着色数为2的图称之为二分图;
如果只用2中颜色, 那么确定一个顶点的颜色之后, 和它相邻的顶点的颜色也就可以确定了。
因此, 从任意顶点出发, 依次确定相邻顶点的颜色, 就可以判断是否可以被两种颜色染色了 。这个问题用DFS可以轻松实现
源码分析
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;