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 ;
}

最新文章

  1. 【javascript激增的思考02】模块化与MVC
  2. 可拖动FPS显示框(UGUI)
  3. TMS320C54x系列DSP的CPU与外设——第2章 TMS320C54x DSP体系结构总体介绍
  4. JQuery实现分页程序代码,源码下载
  5. CKeditor3.6.2 配置与精简
  6. 视频媒体播放,最好的 HTML 解决方法
  7. LintCode-最长公共子串
  8. postfix防垃圾邮件
  9. Ubuntu 11.10下GRUB 2 1.99版编译安装笔记
  10. HDU 2082 找单词
  11. Electron学习笔记(一)
  12. 家庭记账本小程序之java代码部分(java web基础版二)
  13. vue--动画收缩
  14. JS 控制输入框输入表情emoji 显示在页面上
  15. (转)创建Windows服务(Windows Services)N种方式总结
  16. yaf nginx 设置
  17. centos6分辨率设置
  18. Java学习笔记29(IO字符流,转换流)
  19. webbench1.5源码读后总结
  20. NoClassDefFoundError: net/sf/ezmorph/Morpher

热门文章

  1. MySQL mha 高可用集群搭建
  2. resizable可调整尺寸组件
  3. restify构建REST服务(转)
  4. 个人Blog小程序开发完毕
  5. linux给一个文件夹开启权限
  6. jQuery AJAX 与 jQuery 事件
  7. 数字证书在web应用中实现登陆
  8. 使用 Task.Wait()?立刻死锁(deadlock)
  9. Flask第四篇——第一个程序
  10. linux 系统下配置maven环境