HDU4751 Divide Groups---bfs
来源:互联网 发布:树形结构数据库设计 编辑:程序博客网 时间:2024/05/16 18:56
e[i][j]表示两个人认不认识
vis=1或0 表示分在哪个组
枚举所有点作为起点 分在1组内 然后bfs啦
#include <iostream>#include <cstring>#include <string>#include <cstdio>#include <cmath>#include <algorithm>#include <vector>#include <queue>#include <map>#define inf 0x3f3f3f3ftypedef __int64 ll;using namespace std;int n,e[110][110],vis[110];int bfs(int x){ int i,u; vis[x]=1; queue<int>q; q.push(x); while(!q.empty()) { u=q.front(); q.pop(); for(i=1;i<=n;i++) { if(!e[u][i]&&u!=i)//判断不认识的人是不是已经分组 如果分在一组就直接退出 否则分在另外一组 { if(vis[i]==-1) { vis[i]=1-vis[u]; q.push(i); } else if(vis[i]==vis[u]) return 0; } } } return 1;}int main(){ int i,j,x; while(~scanf("%d",&n)) { memset(e,0,sizeof e); memset(vis,-1,sizeof vis); for(i=1;i<=n;i++) { while(scanf("%d",&x)&&x) { e[i][x]=1; } } for(i=1;i<=n;i++)//改成无向图 { for(j=1;j<=n;j++) if(!e[i][j]) e[j][i]=0; } for(i=1;i<=n;i++) { if(vis[i]==-1&&!bfs(i)) { printf("NO\n"); break; } } if(i>n) printf("YES\n"); } return 0;}
- HDU4751 Divide Groups---bfs
- HDU4751 Divide Groups
- hdu4751 Divide Groups (二分图判定)
- hdu4751(BFS)
- HDU 4751 Divide Groups (BFS)
- Divide Groups
- hdu 4751 Divide Groups bfs 搜索 解题报告
- HDOJ4751 Divide Groups 模拟
- HDU 4751 Divide Groups
- HDU-4751-Divide Groups
- HDU 4751 Divide Groups
- HDU:4751 Divide Groups
- HDOJ 4751 Divide Groups
- HDU-4751 Divide Groups
- HDU 4751 Divide Groups
- hdu 4751 Divide Groups
- HDU 4751 Divide Groups
- Divide Groups HDU
- cocos2dx游戏解决方案
- Linux文件和目录限制
- 字典:NSDictionary
- ST
- SQL Server 2012 R2 安装未配置Reportservices导致rsServerConfigurationError
- HDU4751 Divide Groups---bfs
- dom的cud操作
- redis
- 大学生活
- S3C2440上LCD驱动 (FrameBuffer)实例开发
- 给项目经理的一份android自动化测试报告调研
- HDU 1427 速算24点 枚举+dfs
- Tricks of SED/AWK/GREP
- Visual Studio控制台程序输出窗口一闪而过的解决方法