UVA11080- Place the Guards-(二分图染色)-dfs

http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28175


给一个图,n个点,m个边

要用黑白两种点间或把整个图覆盖

最少的黑点/白点个数,如果不能输出-1

//单独的节点在本题题意下需要染色】

直接dfs跑一遍二分图染色,注意,可能存在多个联通块,也就是跑多次dfs 。

每次跑完一个联通块  累加一下最少节点数

最后输出,任一联通块无法二分图染色则输出 -1 结束程序

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
 
const double pi=acos(-1.0);
double eps=0.000001; 
int min(int a,int b)
{return ab?a:b;}

vector mp[205];
int col[205];
int num,vaild;
int bin(int x)
{
	int i;
	num++;						//总共染色点数
	if (col[x]==1) vaild++;			//黑子
	for (i=0;i>t;
	while(t--)
	{
		 	
		cin>>n>>m;
		int x,y,i;
		for (i=0;i


你可能感兴趣的:(搜索)