二分图判定
来源:互联网 发布:汉字笔顺查询软件 编辑:程序博客网 时间:2024/06/05 20:33
如果图中的点可以划分成两个集合使得集合内部的点之间没有边相连。
判定方法就是二色染色法,将一个点染成一种颜色,与之相邻的点染成另一种颜色,如果发现相邻两点颜色相同,则不是二分图,不存在则是二分图。
性质:二分图没有奇数环,存在奇数环就不是二分图。
#include<bits/stdc++.h>using namespace std;const int maxn=1000;vector<int>nxt[maxn+5];int vis[maxn+5];bool dfs(int cur){ for(int i=0;i<nxt[cur].size();i++){ int x=nxt[cur][i]; if(vis[x]==-1){ vis[x]=!vis[cur];//染另一种颜色 if(dfs(x)==false)return false; }else if(vis[x]==vis[cur])return false;//颜色相同不是二分图 } return true;}int n;bool work(){ memset(vis,-1,sizeof(vis));//-1表示未染色 for(int i=1;i<=n;i++){ if(vis[i]==-1){ vis[i]=0;//不同连通分量的起点染上同一种颜色即可 if(dfs(i)==false)return false; } } return true;}int main(){ int m; cin>>n>>m;//n个点m条边无向图 while(m--){ int x,y; cin>>x>>y; nxt[x].push_back(y); nxt[y].push_back(x); } cout<<work();}
0 0
- p1403 二分+二分图判定
- 二分图判定
- 二分图判定
- 二分图的判定
- 二分图判定
- 二分图判定
- hihocorde:二分图判定
- 二分图判定
- 二分图判定
- 二分图判定
- 二分图的判定
- 二分图判定
- 二分图判定
- 二分图的判定
- 二分图的判定
- hdu4751(二分图判定)
- 二分图判定
- 二分图判定
- hd 2717 Catch That Cow
- ARM汇编指令
- Linux mint/Ubuntu 如何修改主机名(亲测有效)
- 后缀数组 poj 3261
- 【代码笔记】HTML+CSS+JavaScript实现密码输入框显示文字
- 二分图判定
- Sublime软件的安装
- NYOJ-722 数独
- HDU - 3068 最长回文
- 分析网站的十个要点
- HDU 5768 Lucky7 中国剩余定理
- XSD (xml Schema Definition)
- Yii框架发送邮件
- 这是一个使用mvp模式实现模拟用户登录的简单Demo。