Description

每天都要考,每天都要讲,大家注意力都集中不起来了,每天听解题报告时都有人交头接耳(也包括我,呵呵)。这样做大大的影响的学习效率(可能吧)。于是,有些好奇心重的同学就开始研究,怎样才会最吵。培训的总共有N个人,但不是每两人之间都讲话,只有一些人有话题聊,而且一个人可能会和多个人有话题(共M对人)。如果所有同学都说在话,教室里最吵。你的任务就是求出把说话者对数控制在多少人以内,无论如何教室里不会变得最吵?注意:A和B说话,同时B和C说话,这算两对人说话。

Input

第一行两个整数N,M。接下来M行,每行两个整数x,y表示x和y有话题聊。

Output

一行,一个整数表示要把说话者对数控制在多少以内,无论如何教室里不最吵。

若有孤立点,则答案为M,否则设最少用k条边覆盖所有点,则答案为k-1

k=N-最大匹配

#include<bits/stdc++.h>
const int N=;
int es[N],enx[N],e0[N],ep,q[N],ql,qr,n,m,f[N],nx[N],pv[N],t[N],ts[N],tk=,ans=;
void ae(int a,int b){
es[ep]=b;enx[ep]=e0[a];e0[a]=ep++;
es[ep]=a;enx[ep]=e0[b];e0[b]=ep++;
}
int get(int x){return x!=f[x]?f[x]=get(f[x]):x;}
int lca(int x,int y){
++tk;
while(){
if(x){
x=get(x);
if(ts[x]==tk)return x;
ts[x]=tk;
x=pv[nx[x]];
}
std::swap(x,y);
}
}
void mg(int a,int b){
while(a!=b){
int w=nx[a],u=pv[w];
if(get(u)!=b)pv[u]=w;
if(t[a]==)t[q[++qr]=a]=;
if(t[w]==)t[q[++qr]=w]=;
if(a==f[a])f[a]=b;
if(w==f[w])f[w]=b;
a=u;
}
}
int bfs(int w0){
for(int i=;i<=n;++i)f[i]=i,pv[i]=,t[i]=;
ql=qr=;
q[++qr]=w0;
while(ql!=qr){
int w=q[++ql];
for(int i=e0[w];i;i=enx[i]){
int u=es[i];
if(u==nx[w]||get(w)==get(u)||t[u]==)continue;
if(t[u]==){
int v=lca(w,u);
if(get(w)!=v)pv[w]=u;
if(get(u)!=v)pv[u]=w;
mg(w,v);mg(u,v);
}else if(nx[u]){
pv[u]=w;
t[u]=;
t[q[++qr]=nx[u]]=;
}else{
while(w){
int a=nx[w];
nx[w]=u;nx[u]=w;
u=a;
w=pv[u];
}
return ;
}
}
}
return ;
}
int main(){
while(scanf("%d%d",&n,&m)==){
memset(e0,,sizeof(int)*(n+));
memset(nx,,sizeof(int)*(n+));
ep=;
for(int i=,a,b;i<=m;++i){
scanf("%d%d",&a,&b);
ae(a,b);
}
for(int i=;i<=n;++i)if(!e0[i]){
printf("%d\n",m);
goto o;
}
ans=;
for(int i=;i<=n;++i)if(!nx[i])ans+=bfs(i);
printf("%d\n",n-ans-);
o:;
}
return ;
}

bzoj2184: 任意图的匹配的更多相关文章

  1. Python正则表达式:最短匹配

    最短匹配应用于:假如有一段文本,你只想匹配最短的可能,而不是最长. 例子 比如有一段html片段,'\this is first label\\the second label\',如何匹配出每个a标 ...

  2. Python: re.compile最短匹配模式,只取双引号内的值\“

    用正则表达式匹配某个文本模式 1.只取双引号内的值 2.长短匹配模式对比 贪婪模式:     模式r'\"(.*)\" '的意图是匹配被双引号包含的文本,但是这个表达式中*是贪婪的 ...

  3. Android 显示意图和隐式意图的区别

    意图在android的应用开发中是很重要的,明白了意图的作用和使用后,对开发会有很大帮助.如果没有把意图搞懂,以后开发应用会感觉缺些什么.        意图的作用:        1.激活组件   ...

  4. Android的显示意图和隐式意图总结

    显示意图 简而言之: 通过指定特定Activity的包名和类名开启Activity 应用场景: 一般应用于本App内的activity间的跳转. XML配置信息: AndroidManifest.xm ...

  5. 显示intent和隐示intent有什么区别

    显式Intent定义:对于明确指出了目标组件名称的Intent,我们称之为显式Intent. 隐式Intent定义:对于没有明确指出目标组件名称的Intent,则称之为隐式Intent. 说明:And ...

  6. Android基础总结

    原文  http://blog.csdn.net/heimady/article/details/10363995 1. 前言 1.1. 什么是 3G . 4G Ÿ 第三代移动通信技术(3rd - G ...

  7. 安卓Intent(隐式)

    相对于显式Intent(明确指出了目标组件名称的Intent),隐式Intent,没有明确指出目标组件名称.显式Intent直接用组件的名称定义目标组件,这种方式很直接.但是由于开发人员往往并不清楚别 ...

  8. python 字符串探讨

    本文内容基于python3 几乎所有有用的程序都会涉及到某些文本处理,不管是解析数据还是产生输出.字符串的学习是重点中的重点,这一节将重点关注文本的操作处理,比如提取字符串,搜索,替换以及解析等.大部 ...

  9. HelloX项目github协同开发指南

    概述 为了提高协同开发效率,HelloX项目已托管到github网站上.根据目前的开发进展,创建了下列几个子项目: HelloX操作系统内核项目:https://github.com/hellox-p ...

随机推荐

  1. 通过Fegin远程调用 ,返回JPA Page 对象报错

    Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of org.sp ...

  2. jquery过滤特殊字符及js字符串转为数字

    //替换特殊字符 $(this).val($(this).val().replace(/[~'!<>@#$%^&*()-+_=:]/g, "")); 方法主要有 ...

  3. 一个浮动 css3效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. zabbix_agent中使用.pgpass

    在配置zabbix过程中,使用了.pgpass 原理: psql -h 192.168.5.XXX -p 5433 -d mydb -U postgres 这个时候要输入密码:user_test 但是 ...

  5. 关于微信中JS-SDK的接口验证过程详细说明

    最近在做微信的企业服务号,刚开始通过个人的测试平台进行开发,使用了自定义菜单,自定义菜单包含两个功能:1.扫一扫,通过扫描我们账单的二维码,绑定账户和账单的关系:2.打开我们系统的账单查询页面,查询账 ...

  6. yii2.0 高级版 restful api使用

    1.复制任意个目录(backend)为api 2.打开api下的main.php 修改 id=>app-api,'controllerNamespace' => 'api\controll ...

  7. (转)MapReduce Design Patterns(chapter 3 (part 2))(六)

    Top Ten Pattern Description Top ten模式跟前面的有很大的不同,跟输入数据大小无关,最终得到的记录数量是确定的.而在通用filtering中,输出的规模取决于输入数据. ...

  8. Android响应式UI教程

    原文:Responsive UI Tutorial for Android 作者:James Nocentini 译者:kmyhy 2017/5/4 更新说明: 由 James Nocentini 更 ...

  9. iOS开发:UITableView的优化技巧-异步绘制Cell

    最近在微博上看到一个很好的开源项目VVeboTableViewDemo,是关于如何优化UITableView的.加上正好最近也在优化项目中的类似朋友圈功能这块,思考了很多关于UITableView的优 ...

  10. I.MX6 I2C DS1337 disable square-wave output

    linux I2C DS1337 disable square-wave output \\\\\\\\\\\-*- 目录 -*-////////// | 一.DS1337访问寄存器说明: | 二.c ...