算法笔记--二分图判定
算法笔记
挑战程序设计p98
#include<bits/stdc++.h> using namespace std; #define ll long long #define ls rt<<1,l,m #define rs rt<<1|1,m+1,r const int INF=0x3f3f3f3f; const int N=1e5+5; vector<int>g[N]; int color[N]={0};bool dfs(int u, int c) {color[u]=c;for(int i=0;i<g[u].size();i++){if(color[g[u][i]]==c)return false;if(color[g[u][i]]==0&&!dfs(g[u][i],-c))return false;}return true; }int main() {ios::sync_with_stdio(false);cin.tie(0);int n;cin>>n;for(int i=0;i<n;i++){int t;cin>>t;while(t--){int a;cin>>a;g[i].push_back(a);}}for(int i=0;i<n;i++){if(color[i]==0){if(!dfs(0,1)){cout<<"NO"<<endl;return 0;}}}cout<<"YES"<<endl;return 0; }
例题1:hiho1121 : 二分图一•二分图判定
代码:
#include<bits/stdc++.h> using namespace std; #define ll long long #define ls rt<<1,l,m #define rs rt<<1|1,m+1,r const int INF=0x3f3f3f3f; const int N=1e5+5; vector<int>g[N]; int color[N]={0};bool dfs(int u, int c) {color[u]=c;for(int i=0;i<g[u].size();i++){if(color[g[u][i]]==c)return false;if(color[g[u][i]]==0&&!dfs(g[u][i],-c))return false;}return true; }int main() {ios::sync_with_stdio(false);cin.tie(0);int t,n,m,u,v;cin>>t;while(t--){cin>>n>>m;for(int i=1;i<=n;i++)g[i].clear();memset(color,0,sizeof(color));for(int i=0;i<m;i++){cin>>u>>v;g[u].push_back(v);g[v].push_back(u); }bool flag=true;for(int i=1;i<=n;i++){if(color[i]==0){if(!dfs(i,1)){flag=false;}}}if(flag)cout<<"Correct"<<endl;else cout<<"Wrong"<<endl;}return 0; }
View Code
例题2:HDU 3478 Catch
代码:
#include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define mem(a,b) memset(a,b,sizeof(a))const int N=1e5+5; vector<int>g[N]; //bool vis[N]={false}; int color[N]={0} ; /*void dfs(int o,int u)//联通性判定 {vis[u]=true;for(int &v:g[u])if(v!=o&&!vis[v])dfs(u,v); }*/bool DFS(int u,int c)//二分图判定 {color[u]=c;for(int &v:g[u]){if(color[v]==c)return false;if(color[v]==0&&!DFS(v,-c))return false;}return true; } int main() {ios::sync_with_stdio(false);cin.tie(0);int t,n,m,s,u,v,cse=1;cin>>t;while(t--){cin>>n>>m>>s;for(int i=0;i<n;i++)g[i].clear();for(int i=0;i<m;i++)cin>>u>>v,g[u].pb(v),g[v].pb(u);cout<<"Case "<<cse++<<": ";//mem(vis,false);mem(color,0);//dfs(0,0); bool flag=true;//for(int i=0;i<n;i++)if(!vis[i])flag=false;if(DFS(0,1))flag=false;if(flag)cout<<"YES"<<endl;else cout<<"NO"<<endl; }return 0; }
View Code
转载于:https://www.cnblogs.com/widsom/p/7250192.html
算法笔记--二分图判定相关推荐
- 【算法笔记】二分图最大权匹配 - KM算法(dfs版O(n4) + bfs版O(n3))
整理的算法模板合集: ACM模板 匈牙利算法又称为 KM 算法,可以在 O(n3)O(n^3)O(n3) 时间内求出二分图的 最大权完美匹配 . 考虑到二分图中两个集合中的点并不总是相同,为了能应用 ...
- 算法笔记_137:二分图的最大匹配(Java)
目录 1 问题描述 2 解决方案 1 问题描述 何为二分图的最大匹配问题? 引用自百度百科: 首先得说明一下何为匹配: 给定一个二分图G,在G的一个子图M中,M的边集{E}中的任意两条边都不依附于 ...
- c语言最小费用流_策略算法工程师之路-图优化算法(一)(二分图amp;最小费用最大流)...
目录 1.图的基本定义 2.双边匹配问题 2.1 二分图基本概念 2.2 二分图最大匹配求解 2.3 二分图最优匹配求解 2.4 二分图最优匹配建模实例 2.4.1 二分图最优匹配在师生匹配中的应用 ...
- POJ2942 Knights of the Round Table 点双连通分量 二分图判定
题目大意 有N个骑士,给出某些骑士之间的仇恨关系,每次开会时会选一些骑士开,骑士们会围坐在一个圆桌旁.一次会议能够顺利举行,要满足两个条件:1.任意相互憎恨的两个骑士不能相邻.2.开会人数为大于2的奇 ...
- python决策树 value_机器学习 | 算法笔记(四)- 决策树算法以及代码实现
概述 上一篇讲述了<机器学习 | 算法笔记(三)- 支持向量机算法以及代码实现>,本篇讲述机器学习算法决策树,内容包括模型介绍及代码实现. 决策树 决策树(Decision Tree)在机 ...
- 《算法笔记》学习笔记(1)
<算法笔记>学习笔记(1) 2021/4/7号 晚上21:36开始学习 第二章 c++/c快速入门 有的时候不要在一个程序中同时使用cout 和 printf 有的时候会出现问题. 头文件 ...
- 数据结构与算法笔记(青岛大学王卓老师视频)
写在前面的话: 因为在学习数据结构之前,学习过一年的算法,所以有一些基础,一些我觉得 没必要的代码或知识就没写上,记得多是一些知识点,写的可能对于别人来说 很难接受,望谅解.我学习算法是在Acwing ...
- 算法笔记——数学相关
算法笔记--数学相关 高精度 乘法逆元 排列组合 二项式定理 质数的判定和应用 约数 拓展欧几里得 大步小步算法(BSGS) 拓展大步小步算法 快速乘和快速幂 矩阵相关 欧拉函数 欧拉定理及费马小定理 ...
- 左程云算法笔记(四)哈希表和有序表的使用、链表
左程云算法笔记(四) 哈希表的使用 有序表的使用 链表 单链表反转 (LC206) 双向链表反转 打印两个有序链表的公共部分 合并两个有序链表(LC21) 判断一个链表是否为回文结构 (LC234) ...
最新文章
- 常见的几个js笔试题
- .net将数据写入Excel指定单元格
- new char[x]和new char(x)的差别
- python开发的优秀界面-八款常用的 Python GUI 开发框架推荐
- NSIS中判断.net framework 是否安装
- Fail at Scale
- ubuntu12.10下arm-linux-gcc交叉编译环境的搭建
- 公布一个软件,轻新视频录播程序,H264/AAC录制视音频,保存FLV,支持RTMP直播...
- [Coding Style] CSS coding style
- idea 一键部署 cloudtoolkit
- linux下php-5.4.8.tar.gz编译安装全攻略
- python网络爬虫系列教程——python中requests库应用全解
- GoldWave的消音、淡入淡出、改变音乐速率
- 刘强东又给老家的乡亲们送生鲜年货了!东哥同款了解一下?
- 极客大学架构师训练营 大数据 三驾马车 GFS、MapReduce、BigTable,Hadoop HDFS 第23课 听课总结
- excel计算机二级考试试题,计算机二级考试Excel操作考试题.doc
- 我的第一届acm大赛
- 《中国通史》学习记录
- 语法长难句——并列句的练习
- Java下载文件时文件名中的中文变成下划线,其他正常
热门文章
- Node.js「二」—— fs 模块 / async 与 await
- 机器学习算法(6)——随机森林
- SetTimeout(延迟计时器)
- 7-2 输出约数 (9 分)
- 7-273 插入排序还是归并排序 (25 分)
- freebsd运行php,FreeBSD学习笔记16-FreeBSD下安装PHP
- 栈的顺序存储结构、链式存储架构及其实现
- 计算机应用基础发帖本科,《计算机应用基础》(本)教学大纲.doc
- 广州计算机专业王健,王健 - 教师简历 CV- 武汉大学计算机学院
- 初识c语言教程,第1课C语言教程一: 初识C程序.doc