//推断是否为二分图:在无向图G中,假设存在奇数回路,则不是二分图。否则是二分图。
//推断回路奇偶性:把相邻两点染成黑白两色。假设相邻两点出现颜色同样则存在奇数回路。 也就是非二分图。
# include <stdio.h>
# include <string.h>
# include <algorithm>
using namespace std;
int vis[210],map[210][210],cott[210];
int c[210];
int flag,n,m;
void dfs(int i,int color)//染色法推断是否是二分图
{
for(int j=1; j<=n; j++)
{
if(map[i][j])
{
if(c[j]==0)
{
c[j]=-color;
dfs(j,-color);
}
else if(c[j]==color)
{
flag=false;
return ;
}
if(!flag)
return ;
}
}
}
int check()
{
flag=1;
memset(c,0,sizeof(c));
c[1]=1;//一号为黑色,与他相邻的都染为白色
dfs(1,1);//从一号開始
return flag;
} int bfs(int x)
{
for(int i=1; i<=n; i++)
{
if(!vis[i]&&map[x][i])
{
vis[i]=1;
if(!cott[i]|bfs(cott[i]))
{
cott[i]=x;
return 1;
}
}
}
return 0;
}
int main()
{
int a,b;
while(~scanf("%d%d",&n,&m))
{
memset(map,0,sizeof(map));
for(int i=0; i<m; i++)
{
scanf("%d%d",&a,&b);
map[b][a]=map[a][b]=1;
}
if(!check())
{
printf("No\n");
}
else
{
int cot=0;
memset(cott,0,sizeof(cott));
for(int i=1; i<=n; i++)//以x集合为准找了一遍。又以y集合为准找了一遍。匹配数量增倍
{
memset(vis,0,sizeof(vis));
if(bfs(i))
cot++;
}
printf("%d\n",cot/2); } }
return 0;
}

最新文章

  1. bzoj4462: [Jsoi2013]编程作业
  2. word20161215
  3. Theano在windows下的安装及GPU加速
  4. [python] Ubuntu 环境下安装 python3.5 + pip
  5. Performance Analyzer Tool
  6. java.util.ConcurrentModificationException 解决办法
  7. Github排行榜
  8. II7下配置SSAS通过HTTP 远程链接访问
  9. 宣布发布长期保留 Azure Backup功能
  10. 淘宝可以传照片搜索商品,verygood.雅客VC多味水果糖
  11. sum() over() 函数的使用
  12. BZOJ1697: [Usaco2007 Feb]Cow Sorting牛排序
  13. UITextField输入限制/小数/首位等
  14. 常用路径 URL 中的斜杠与反斜杠
  15. Java-ServletRequestEvent-ServletRequestAttributeEvent
  16. python lock, semaphore, event实现线程同步
  17. git使用总结(持续更新,个人总结记录使用)
  18. Git——如何将本地项目提交至远程仓库(第一次)
  19. scrapy模拟登录
  20. ES5原型琏继承

热门文章

  1. 【UOJ 179】 #179. 线性规划 (单纯形法)
  2. 「Luogu4321」随机游走
  3. loj2480 [CEOI2017]One-Way Streets 边双+树上差分
  4. Java并发(二):Java内存模型
  5. UESTC 2015dp专题 j 男神的约会 bfs
  6. PAT甲级1033. To Fill or Not to Fill
  7. spring ioc 理解
  8. ubuntu 关闭n卡
  9. 解决Visual Studio 2015创建工程时的“DNX SDK version &#39;dnx-clr-win-x86.1.0.0-beta5&#39; failed to install.”错误
  10. IPC low/medium/high density 什么意思?