/*1A 31ms*/
#include<stdio.h>
#include<string.h>
#define N 300
int n;
struct node {
int u,v,next;
}bian[N*N*2];
int color[N],vis[N],link[N],visit[N],ma[N][N],f[N],head[N],yong;
void addedge(int u,int v) {
bian[yong].u=u;
bian[yong].v=v;
bian[yong].next=head[u];
head[u]=yong++;
}
void init() {//初始化
memset(ma,0,sizeof(ma));
memset(f,0,sizeof(f));
memset(visit,0,sizeof(visit));
memset(link,-1,sizeof(link));
memset(color,0,sizeof(color));
memset(vis,0,sizeof(vis));
memset(head,-1,sizeof(head));
yong=0;
}
int ff(int u) {//二分匹配
int i;
for(i=1;i<=n;i++)
if(visit[i]==0&&ma[u][i]) {
visit[i]=1;
if(link[i]==-1||ff(link[i])) {
link[i]=u;
return 1;
}
}
return 0;
}
int find(int u,int f) {//交叉染色判定
int i;
for(i=head[u];i!=-1;i=bian[i].next) {
int v=bian[i].v;
if(f)
ma[u][v]=1;//建立邻接矩阵
else
ma[v][u]=1;
if(!vis[v]) {
color[v]=!color[u];
vis[v]=1;
find(v,f^1);
}
else
if(color[v]==color[u])return 0;
}
return 1;
}
int main() {
int m,i,a,b,ok;
while(scanf("%d%d",&n,&m)!=EOF) {
init();
while(m--) {
scanf("%d%d",&a,&b);
addedge(a,b);
addedge(b,a);
f[a]=f[b]=1;//存在
}
ok=0;
for(i=1;i<=n;i++)
if(!vis[i]&&f[i]) {
color[i]=1;
vis[i]=1;
if(find(i,1)==0)
ok=1;
}
if(ok) {//是否存在不能交叉染色的
printf("No\n");
continue;
}
b=0;
for(i=1;i<=n;i++) {//二分最大匹配
memset(visit,0,sizeof(visit));
b+=ff(i);
}
printf("%d\n",b);
}
return 0;
}

最新文章

  1. linux下crontab命令的使用
  2. ZK dropEvent简单使用
  3. bzoj2729 [HNOI2012]排队
  4. iOS开发 差间距滚动
  5. &lt;转&gt;单播,广播,组播的缺点与优点
  6. 当升级新版本的时候,从新加载新版本的js的方法
  7. android视频录制、另一部手机实时观看方案
  8. http服务搭建
  9. Delaunay三角化算法
  10. 最近公共祖先 LCA 倍增算法
  11. c#实战开发:以太坊钱包对接私链 (二)
  12. python正则表达式模块re:正则表达式常用字符、常用可选标志位、group与groups、match、search、sub、split,findall、compile、特殊字符转义
  13. bzoj 1095 括号序列求两点距离
  14. jQuery的遍历
  15. Window日志分析
  16. CentOS代理设置
  17. jQuery EasyUI-DataGrid动态加载表头
  18. Git Status 中文乱码解决
  19. java程序: 倒计时的小程序 (GridPane, Timer, Calendar, SimpleDateFormat ...)
  20. django-模板层基础2

热门文章

  1. Extension Methods (C# Programming Guide)
  2. bzoj 3231 [ Sdoi 2008 ] 递归数列 —— 矩阵乘法
  3. codeforces round #424 div2
  4. python中使用pip安装报错:Fatal error in launcher... 解决方法
  5. java 关键字与保留字
  6. Java调用JavaWebService
  7. ROS-URDF-活动关节
  8. B - Double Cola
  9. webApi上传服务,可重命名,可创建文件夹
  10. 【转】SQL SERVER 主体,已同步