判断二分图 染色法 NYOJ 1015
来源:互联网 发布:人工智能硬件解决方案 编辑:程序博客网 时间:2024/05/17 22:34
二部图
时间限制:1000 ms | 内存限制:65535 KB
难度:1
- 描述
二部图又叫二分图,我们不是求它的二分图最大匹配,也不是完美匹配,也不是多重匹配,而是证明一个图是不是二部图。证明二部图可以用着色来解决,即我们可以用两种颜色去涂一个图,使的任意相连的两个顶点颜色不相同,切任意两个结点之间最多一条边。为了简化问题,我们每次都从0节点开始涂色
- 输入
- 输入:
多组数据
第一行一个整数 n(n<=200) 表示 n个节点
第二行一个整数m 表示 条边
随后 m行 两个整数 u , v 表示 一条边 - 输出
- 如果是二部图输出 BICOLORABLE.否则输出 NOT BICOLORABLE.
- 样例输入
330 11 22 0320 10 2
- 样例输出
NOT BICOLORABLE.BICOLORABLE.
判断条件
1.如果节点没有染过色,就染上与它相反的颜色,推入队列,
2.如果节点染过色且相反,忽视掉
3.如果节点染过色且与父节点相同,证明不是二分图,return false
#include<stdio.h>#include<string.h>#include<queue>#include<vector>#include<algorithm>using namespace std;vector <int> map[205];int n,color[205];bool bfs(){queue<int>q;color[0]=1;q.push(0);while(!q.empty()){int v1=q.front();q.pop();for(int j=0;j<map[v1].size();j++){int v2=map[v1][j];if(color[v2]==-1){color[v2]=-color[v1];q.push(v2);}else if(color[v2]==color[v1])return false;}}return true;}int main(){int n,i,j,x,y,m;while(scanf("%d%d",&n,&m)!=EOF){ memset(color,-1,sizeof(color)); for(i=0;i<205;i++) map[i].clear();for(i=0;i<m;i++){scanf("%d%d",&x,&y);map[x].push_back(y);map[y].push_back(x);}if(bfs())printf("BICOLORABLE.\n");elseprintf("NOT BICOLORABLE.\n");}}
还有个不开vector的~
#include<stdio.h> #include<string.h> #include<queue> #include<iostream> using namespace std; int map[205][205],vis[205],n; bool bfs(){ queue<int>q; memset(vis,0,sizeof(vis)); q.push(0); vis[0]=1; while(!q.empty()) { int p=q.front(); q.pop(); for(int j=0;j<n;j++) {if(map[p][j]) { if(vis[j]==0) { vis[j]=-vis[p]; q.push(j); } else if(vis[j]==vis[p]) return false; } } } return true; } int main() { int m,a,b,i; while(scanf("%d%d",&n,&m)!=EOF) { memset(map,0,sizeof(map)); for(i=0;i<m;i++) { scanf("%d%d",&a,&b); map[a][b]=map[b][a]=1; } if(!bfs()||n==1) printf("NOT BICOLORABLE.\n"); else printf("BICOLORABLE.\n"); } }
阅读全文
0 0
- 判断二分图 染色法 NYOJ 1015
- 南阳理工1015 (染色法判断二分图)
- 南阳理工1015 (染色法判断二分图)
- 交叉染色法判断二分图
- 判断是否为二分图 染色法
- hdu 5285(染色法判断二分图)
- 判断二分图——染色法
- hdu 4751 染色法判断二分图
- nyoj 1015 二分图判断
- 二分图的判断--染色
- NYOJ 题目1015 二部图(染色法判二分图)
- NYOJ1015 二部图(染色法判断二分图)
- hdu 2444(染色法判断二分图+匈牙利算法)
- hdu 2444(染色法判断二分图+匈牙利算法)
- HDU 5285 wyh2000 and pupil(染色法判断二分图)
- NYOJ-1015(判断是否为二分图)
- poj 2942 求点双联通+二分图判断奇偶环+交叉染色法判断二分图
- HDU 4751 交叉染色判断二分图
- 基于Token的WEB后台认证机制
- REDIS数据类型详解LIST-HASH-SET-STRING
- 软件调试笔记60
- 用java发送电子邮件
- 事件(四)
- 判断二分图 染色法 NYOJ 1015
- 远程桌面提示凭证不工作
- jdk7 WatchService 监控文件夹
- ios股票K线图的绘制
- 第十六周数据结构学期总结
- MySQL 运维
- android pull to refresh listview 框架使用demo
- 量化投资(一):在python平台上设置买入卖出
- 虚拟现实产业无法停止增长,但工人的供给是有限的 Noland专注于在加州欧文市的EON Reality的教育和能源技术应用。EON设计应用程序来培训不同行业的工人。例如,埃克森美孚(Exxon