首页 > 其他分享 >基础图论笔记

基础图论笔记

时间:2024-02-15 11:22:45浏览次数:27  
标签:二分 输出 图论 const int 基础 笔记 染色法 例题

二分图


 

 

染色法

 

 

例题ACwing 860 - 染色法判断二分图(染色法)-CSDN博客

给定一个n个点m条边的无向图,图中可能存在重边和自环。

请你判断这个图是否是二分图。

输入格式
第一行包含两个整数n和m。

接下来m行,每行包含两个整数u和v,表示点u和点v之间存在一条边。

输出格式
如果给定图是二分图,则输出“Yes”,否则输出“No”。

数据范围
1≤ n,m≤ 105

输入样例:
4 4
1 3
1 4
2 3
2 4

输出样例:
Yes

#include <bits/stdc++.h>
using namespace std;

const int N=1e5+5;
int n, m, u1, v1, flag=1, color[N]; 
vector<int> a[N];
bool dfs(int u, int c)
{
	color[u]=c;
	
	for (int i=0; i<a[u].size(); i++)
	{
		int v=a[u][i];
		if (!color[v]) 
		{
			if (!dfs(v, 3-c)) return false;
		}
		else if (color[v]==c) return false;
	}
	return true;
}
int main() 
{
	scanf("%d%d", &n, &m);
	while (m--)
	{
		scanf("%d%d", &u1, &v1);
		a[u1].push_back(v1);
		a[v1].push_back(u1);
	}
	for (int i=1; i<=n; i++)
		if (!color[i])
			if (!dfs(i, 1))
			{
				flag=0;
				break;
			}
		
	if (flag) printf("Yes");
	else printf("No");
	return 0;
}

  

 

 

例题:

二分图最大匹配P3386 【模板】二分图最大匹配 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include <bits/stdc++.h>
using namespace std;

const int N=505;
int n, m, e, u1, v1, ans=0, vis[N], match[N];
vector<int> a[N];
bool find(int x)
{
	for (int i=0; i<a[x].size(); i++)
	{
		int v=a[x][i];
		if (!vis[v])
		{
			vis[v]=1;
			if (!match[v] || find(match[v]))
			{
				match[v]=x;
				return true;
			}
		}
	}
	return false;
}
int main() 
{
	scanf("%d%d%d", &n, &m, &e);
	for (int i=1; i<=e; i++)
	{
		scanf("%d%d", &u1, &v1);
		a[u1].push_back(v1);
	}
	
	for (int i=1; i<=n; i++)
	{
		memset(vis, 0, sizeof vis);
		if (find(i)) ans++;
	}
	
	printf("%d", ans);
	return 0;
}

  

 

标签:二分,输出,图论,const,int,基础,笔记,染色法,例题
From: https://www.cnblogs.com/didiao233/p/18016081

相关文章

  • 图论题目合集
    题面:要求把\(1\simn\)排序,满足给定的所有条件,满足条件之后,编号越小要越靠前。(满足条件情况下,先让1最靠左,然后让2……)每个条件会给出两个数\(a,b\),表示\(a\)必须在\(b\)之前。解答:看起来很像拓扑排序。于是我们对于每个条件\(a,b\),从\(a\)向\(b\)连一条边。每......
  • Go语言精进之路读书笔记第27条——尽量定义小接口
    接口越大,抽象程度越低——RobPike,Go语言之父27.1Go推荐定义小接口无论标准库还是社区项目,都遵循了“尽量定义小接口”的建议,方法数量在1~3个范围内的接口占了绝大多数。27.2小接口的优势1.接口越小,抽象程度越高,被接纳度越高抽象程度越高,对应的集合空间越大。无方法的......
  • 【阅读笔记】空域保边降噪《Side Window Filtering》
    1、保边滤波背景保边滤波器的代表包括双边滤波、引导滤波,但是这类滤波器有一个问题,它们均将待处理的像素点放在了方形滤波窗口的中心。但如果待处理的像素位于图像纹理或者边缘,方形滤波核卷积的处理结果会导致这个边缘变模糊。基于这个观察,《SideWindowFiltering》的作者提出......
  • Lag-Llama:第一个时间序列预测的开源基础模型介绍和性能测试
    2023年10月,我们发表了一篇关于TimeGPT的文章,TimeGPT是时间序列预测的第一个基础模型之一,具有零样本推理、异常检测和共形预测能力。虽然TimeGPT是一个专有模型,只能通过API访问。但是它还是引发了对时间序列基础模型的更多研究。到了2024年2月,已经有了一个用于时间序列预测的开源......
  • 《从基础认识相对论的错误》 回复
    《从基础认识相对论的错误》      https://tieba.baidu.com/p/8895510201     这帖是你昨天发的, 10天前,你发了  《相对论对物理理论的影响是什么?》   https://tieba.baidu.com/p/8885351309  , 半年前,  我发过《@东方已晓的反相观点》......
  • 2023北京集训 做题笔记
    2023北京集训做题笔记动态规划CF1610HSquidGame钦定\(1\)为根,发现如果\(u,v\)不为祖先后代关系,则选择根能把它们全部消掉剩下的\(u,v\)均为祖先后代,假设\(u\)为祖先如果在一条链上,问题转化为选择尽量少的点覆盖所有线段,与端点重合不算常规做法是按右端点排序,每次......
  • 2024.1 省选集训题单笔记
    CF513E2SubarrayCuts一开始还以为有什么神仙性质,找了半天发现性质不好,要考虑一些暴力点的做法了相邻两段和之差的绝对值,这个限制很难处理我们只能考虑把贡献拆开,如果把每段的位置与和标在一张折线图上,我们发现这张图中的「山峰」产生\(+2\)的贡献,「山谷」产生\(-2\)的贡......
  • NOIP2023 集训做题笔记
    杂项CF1181E2AStoryofOneCountry(Hard)启发式分裂发现如果当前矩形中有一整行或一整列没有穿过城堡内部,就可以分为\(2\)部分而且分开后相当于限制减少,每次贪心的能分就分,朴素实现复杂度为\(O(n^2\logn)\),可通过easyversion考虑优化每次找分割点的过程如果分割点......
  • Codeforces 做题笔记
    1841EFilltheMatrix刚开始思路错了,以为就从下往上铺但发现要尽量让横的连续段断开的次数少,每断开一次相当于数量\(-1\)所以从宽度最大的矩形开始填,尽量填满可以用set维护当前行的连续段,这一列遇到黑格就split,去除宽度为\(1\)的,同时记录加入的时间戳来计算矩形高度vo......
  • python基础学习6-第三方模块
    自定义模块优先级大于系统模块模块分为系统模块,自定义模块,第三方模块导入方式import模块名称[as别名]from模块名称import变量/函数/类*包的导入import包名.模块名as别名form包名import模块名as别名form包名.模块名import函数/变量/类*主程序运行i......