【Uva 11080】Place the Guards
【Link】:
【Description】 
 
一些城市,之间有道路相连,现在要安放警卫,警卫能看守到当前点周围的边,一条边只能有一个警卫看守,问是否有方案,如果有最少放几个警卫.
【Solution】 
 
二分图; 
如果某个连通块不能形成二分图->不行! 
如果能形成二分图. 
则看看是在染成颜色0的位置放守卫还是在1的位置放守卫; 
如果连通块只有1个的话,答案是1而不是0; 
因为有说所有的点也要覆盖到的。 
这题和最小点覆盖不同,最小点覆盖的话,两个取的点之间可以有边相连 
最小点覆盖也没有涉及到单个的点的处理。 
 
【NumberOf WA】 
 
0 
 
【Reviw】
【Code】
#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x)
#define ri(x) scanf("%d",&x)
#define rl(x) scanf("%lld",&x)
#define rs(x) scanf("%s",x+1)
#define oi(x) printf("%d",x)
#define ol(x) printf("%lld",x)
#define oc putchar(' ')
#define os(x) printf(x)
#define all(x) x.begin(),x.end()
#define Open() freopen("F:\\rush.txt","r",stdin)
#define Close() ios::sync_with_stdio(0)
typedef pair<int,int> pii;
typedef pair<LL,LL> pll;
const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 200;
int n,m,color[N+20],cnt[2],ans;
vector <int> G[N+20];
int dfs(int x,int c){
    color[x] = c;
    cnt[c]++;
    int len = G[x].size(),bo = 1;
    rep1(i,0,len-1){
        int y = G[x][i];
        if (color[y]==-1)
            bo &= dfs(y,1-c);
        else
            if (color[y]==color[x])
                return 0;
    }
    return bo;
}
int main(){
    //Open();
    //Close();
    int T;
    ri(T);
    while (T--){
        rep1(i,1,N) G[i].clear();
        ri(n),ri(m);
        rep1(i,1,m){
            int x,y;
            ri(x),ri(y);
            x++,y++;
            G[x].pb(y),G[y].pb(x);
        }
        ans = 0;
        int ok = 1;
        ms(color,255);
        rep1(i,1,n)
            if (color[i]==-1){
                cnt[0] = 0,cnt[1] = 0;
                ok &= dfs(i,0);
                if (cnt[0] + cnt[1] == 1){
                    ans+=1;
                }else
                    ans+=min(cnt[0],cnt[1]);
            }
        if (!ok)
            puts("-1");
        else
            oi(ans),puts("");
    }
    return 0;
}【Uva 11080】Place the Guards的更多相关文章
- 【巧妙算法系列】【Uva 11464】 - Even Parity 偶数矩阵
		偶数矩阵(Even Parity, UVa 11464) 给你一个n×n的01矩阵(每个元素非0即1),你的任务是把尽量少的0变成1,使得每个元素的上.下.左.右的元素(如果存在的话)之和均为偶数.比 ... 
- 【贪心+中位数】【UVa 11300】 分金币
		(解方程建模+中位数求最短累积位移) 分金币(Spreading the Wealth, UVa 11300) 圆桌旁坐着n个人,每人有一定数量的金币,金币总数能被n整除.每个人可以给他左右相邻的人一 ... 
- 【UVa 10881】Piotr's Ants
		Piotr's Ants Porsition:Uva 10881 白书P9 中文改编题:[T^T][FJUT]第二届新生赛真S题地震了 "One thing is for certain: ... 
- 【UVa 116】Unidirectional TSP
		[Link]:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ... 
- 【UVa 1347】Tour
		[Link]:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ... 
- 【UVA 437】The Tower of Babylon(记忆化搜索写法)
		[题目链接]:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ... 
- 【uva 1025】A Spy in the Metro
		[题目链接]:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ... 
- 【Uva 11584】Partitioning by Palindromes
		[Link]:https://cn.vjudge.net/contest/170078#problem/G [Description] 给你若干个只由小写字母组成的字符串; 问你,这个字符串,最少能由 ... 
- 【Uva 11400】Lighting System Design
		[Link]: [Description] 你要构建一个供电系统; 给你n种灯泡来构建这么一个系统; 每种灯泡有4个参数 1.灯泡的工作电压 2.灯泡的所需的电源的花费(只要买一个电源就能供这种灯泡的 ... 
随机推荐
- html 笔记2
			.css重用 <style> 如果整个页面的宽度 > 900px时: { .c{ 共有 } .c1{ 独有 } } .c2{ 独有 } </style> <div ... 
- Python正则表达式初识(九)
			继续分享Python正则表达式的基础知识,今天给大家分享的特殊字符是[\u4E00-\u9FA5],这个特殊字符最好能够记下来,如果记不得的话通过百度也是可以一下子查到的. 该特殊字符是固定的写法,其 ... 
- happy Mom ——php mysqli DES加密
			看完<爱你就像爱生命>这本书,真的看出小波哥很有才,跟小波哥比起来,我唯一拿的出手的可能就是我比他的颜值了.想起一句话,人不是因为美丽而可爱,而是因为可爱而美丽.所以我对我的要求是,继续修 ... 
- VBA 字符串操作(基础篇)
			转自:http://blog.csdn.net/jyh_jack/article/details/2315345 mid(字符串,从第几个开始,长度) 在[字符串]中[从第几个开始]取出[长度个字符串 ... 
- mpvue 开发小程序
			转换成vue语法, 小程序中原生的事件用@ 原生的属性用: 
- express随笔
			Express 是node 第三方框架,框架的意义就在于能大大简化程序地开发.看一下Express是怎么简化node程序开发的. 1,用Express写一个hello world 程序,我们来体验一下 ... 
- java中锁的理解
			在并发编程中,经常遇到多个线程访问同一个 共享资源 ,这时候作为开发者必须考虑如何维护数据一致性,在java中synchronized关键字被常用于维护数据一致性.synchronized机制是给共享 ... 
- 最新华为数通HCNP-随堂培训视频课程 大牛讲解高清带实验
			2017年最新华为数通HCNP-随堂培训视频课程 大牛讲解高清带实验 2017最新的华为中级HCNP培训,数通方向,讲解非常牛高清课程附带实验. 华为数通HCNP-2017年最新随堂培训视频(高清)\ ... 
- SPI总线工作模式
			一.SPI总线工作模式 SPI总线有四种工作模式,是由时钟极性选择(CPOL)和时钟相位选择(CPHA)决定的. CPOL = 0 ,SPI总线空闲为低电平,CPOL = 1, SPI总线空闲为高电平 ... 
- 【Henu ACM Round#18 D】Looksery Party
			[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 假设现在每个人收到的信息条数存在cnt里面 那个人猜的条数为target 则如果cnt[i]==target[i] 则我们就让第i个 ... 
