https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2021

题解:二分图判断

/*
*@Author:   STZG
*@Language: C++
*/
#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<string>
#include<vector>
#include<bitset>
#include<queue>
#include<deque>
#include<stack>
#include<cmath>
#include<list>
#include<map>
#include<set>
//#define DEBUG
#define RI register int
#define endl "\n"
using namespace std;
typedef long long ll;
//typedef __int128 lll;
const int N=100000+10;
const int M=100000+10;
const int MOD=1e9+7;
const double PI = acos(-1.0);
const double EXP = 1E-8;
const int INF = 0x3f3f3f3f;
int t,n,m,k,p,l,r,u,v;
int ans,cnt[2],flag,temp,sum;
int col[N];
char str;
struct node{};
vector<int>G[N];
bool dfs(int u,int color){col[u]=color;cnt[color]++;for(int i=0,j=G[u].size();i<j;i++){int v=G[u][i];if(col[u]==col[v])return 0;if(col[v]==-1&&!dfs(v,!color))return 0;}return 1;
}
void init(){for(int i=0;i<n;i++){G[i].clear();}memset(col,-1,sizeof(col));ans=1;sum=0;
}
int main()
{
#ifdef DEBUGfreopen("input.in", "r", stdin);//freopen("output.out", "w", stdout);
#endif//ios::sync_with_stdio(false);//cin.tie(0);//cout.tie(0);scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);init();for(int i=1;i<=m;i++){scanf("%d%d",&u,&v);G[u].push_back(v);G[v].push_back(u);}for(int i=0;i<n;i++){if(col[i]==-1){memset(cnt,0,sizeof(cnt));ans&=dfs(i,1);if(ans){if(cnt[0]+cnt[1]==1){sum++;}else{sum+=min(cnt[0],cnt[1]);}}}}if(ans){cout<<sum<<endl;}else{cout<<-1<<endl;}}#ifdef DEBUGprintf("Time cost : %lf s\n",(double)clock()/CLOCKS_PER_SEC);
#endif//cout << "Hello world!" << endl;return 0;
}

Place the Guards相关推荐

  1. less新手入门(四)—— Mixin Guards

    八.Mixin Guards 有条件的 mixin 当您想要匹配表达式时,相对于简单的值或特性,Guards是有用的.如果您熟悉函数式编程,您可能已经遇到过它们. 为了尽可能地保持CSS的声明性质,在 ...

  2. SAP 电商云 Spartacus UI Checkout 页面的三个 page guards

    点击 Proceed To 按钮之后,触发 CmsGuardsService 的 cmsPageCanActivate 方法: 依次调用每个 page guard: if (guards.length ...

  3. Less的条件表达式Guards

    当需要根据表达式,而不是参数的值或数量进行匹配时,条件表达式(Guards)就显得非常有用.如果你熟悉函数式编程的话,对条件表达式也不会陌生. 为了尽可能地接近CSS的语言结构,Less使用关键字 w ...

  4. 长城守卫 Beijing guards CERC 2004 LA3177 解题总结

    长城守卫 Beijing guards CERC 2004 LA3177 解题总结 在最小值,最大值的问题 或者没有办法确定答案时候,  可以使用二分答案法. #include <cstdio& ...

  5. UVA1335-Beijin Guards(二分)

    Beijin Guards 题意:有n个守卫围成一个圈,第 i 个守卫想要 a [ i ] 件礼物,要求每个相邻的守卫礼物不重复,求最少需要多少种礼物. n 为偶数时,答案即为   ,. n 为奇数的 ...

  6. LA3177 - Beijing Guards(二分+贪心【更优美的解法)

    简介:同皇帝的烦恼 分析: 如果n是偶数,那么答案就是相邻两个人的r值之和的最大值 即ans=max{r(i)+r(i+1)} (i=1,2,3,-,n),规定r(n+1)=r1 这时的ans实际上是 ...

  7. UVa1335 Beijing Guards(二分查找)

    问题:有n个守卫,构成一个环,分别要求获得ri个礼物,问最少需要准备多少个礼物,使得相邻的两个人礼物各不相同 思路: 假设礼物个数为 p n为偶数情况时,相邻两个要求礼物的和的最大值满足条件 n为奇数 ...

  8. [UVALive 3177] Beijing Guards

    图片加载可能有点慢,请跳过题面先看题解,谢谢 Uva的题目还是很好的,比如这道,是一道比较好的思维题,代码难度不大 首先处理一下偶数的情况,很简单,答案是相邻两个守卫的礼物和的最大值 这儿请 fhr ...

  9. 【UVA - 1335】Beijing Guards (贪心,二分)

    题干: 题目大意: 有n个人为成一个圈,其中第i个人想要r[i]种不同的礼物,相邻的两个人可以聊天,炫耀自己的礼物.如果两个相邻的人拥有同一种礼物,则双方都会很不高兴,问最少需要多少种不同的礼物才能满 ...

最新文章

  1. Java新手问题 02 面向对象基本功
  2. Matlab:精度控制
  3. java8 函数式编程_您必须学习Java 8的函数式编程吗?
  4. ADF:动态视图对象
  5. 利用TCN网络实现MNIST手写体数据集的识别
  6. OFFICE技术讲座:边框底纹对布局的影响
  7. java下载zip文件
  8. GAN:两者分布不重合JS散度为log2的数学证明
  9. Cmake查找所有指定cpp文件并进行编译
  10. 中环混改尚存变数 高调的TCL要上演“资本魔输”?
  11. 名言警句(英语和汉语)
  12. 基于区块链的数字藏品管控方案
  13. NetBeans ide操作流程及注意事项
  14. 针对商品标题冗长问题,阿里工程师怎么解决?
  15. 使用树莓派进行pH测定
  16. QTableWidget表格控件的用法
  17. 海量数据处理的 Top K算法(问题) 小顶堆实现
  18. 测试工程师具备的基本素质
  19. WSL(ubuntu) 和Cisco Anyconnect存在的网络连接异常问题
  20. 模电学习02:晶体三极管

热门文章

  1. android xml 未能解析文件,Android Studio提示“无法解析符号”,但项目已编译
  2. javascript 判断为负数_JavaScript从零开始——标准库(7)
  3. java media_unmount file_(20120801)android文件的读写SD卡总结
  4. c语言中的数字菱形,打印数字菱形,急啊,帮帮小女子啊。。。
  5. Mysql -uroot -p 登陆不上_MySQL命令行登陆,远程登陆MySQL 的方法
  6. 七十四、完成Vue项目城市详细页,并实现打包
  7. 四十、Vue项目上手 | 用户管理系统 实现弹窗,搜索和详细页功能(下篇)
  8. 期末考试前的预习,科目:化工设备与反应器(6)
  9. 我是Python小玩家,一行代码能做哪些炫酷的事情 (三十一)
  10. 化工设备与反应器 第三章 直梁的弯曲