图论
Ha_chuochuo
这个作者很懒,什么都没留下…
展开
-
二分图 (最大匹配 + 最小点覆盖 + 最少路径覆盖 + 最大独立集)
最大匹配匈牙利算法。最小点覆盖概念:用最少的点,让每条边都至少和其中的一个点关联König定理:一个二分图中的最大匹配数等于该图的最小顶点覆盖数。最小点覆盖 = 最大匹配。证明:这里最少路径覆盖(不相交路径)概念:在一个有向图中,找出最少的路径,使得这些路径经过其中每个点,且每个点只与一条路径相关联。方法:最少路径覆盖 = 点数 - 二分图最大匹配 。证明:设点数为 n ,最大匹配数为 m,因为我们要让路径尽量少,先设每个点即一条路径,然后一个匹配可以连接两个点,即.原创 2020-08-03 18:30:40 · 640 阅读 · 0 评论 -
网络流专题 模板 + 例题 (Going Home POJ - 2195 + Dining POJ - 3281 )
最大流Dinic 建图时必须要建一条流量为0的反向边#include<bits/stdc++.h>#define ll long long#define MOD 998244353 #define INF 0x3f3f3f3f#define mem(a,x) memset(a,x,sizeof(a)) #define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);using namespa...原创 2020-08-03 20:28:25 · 187 阅读 · 0 评论 -
Codeforces Round #656 (Div. 3) (E. Directing Edges)(拓扑排序)
题目描述You are given a graph consisting ofnnvertices andmmedges. It is not guaranteed that the given graph is connected. Some edges are already directed and you can't change their direction. Other edges are undirected and you have to choose some direc...原创 2020-07-23 12:18:50 · 104 阅读 · 0 评论 -
图的储存---邻接表
存图最基本的方法有两种,分为邻接矩阵和邻接图。一般规模较大的图就是用邻接图来存图。他的优点是存图效率非常高,只需要与边数成正比的空间 存储复杂度为**O(V+E)**,而且能储存重边。 邻接表可以通过结构体+指针,也可以通过结构体+数组,下面介绍结构体+数组的实现。#include<bits/stdc++.h>#define ll long long#define maxn 100005#define MOD 1000000007 #define INF 0x3...原创 2020-06-28 14:39:50 · 131 阅读 · 0 评论 -
最短路模板(Floyd+bellman+spfa+Dijkstra)
最短路问题1、单源最短路a、所有权边都是正数: Dijkstra算法 :朴素算法(O(mn)) 堆优化(O(mlogn))b、有负数权变: Bellman算法 : O(mn) Spfa算法:(一般情况O(m),最坏情况 O(mn)) (慎用)2、多源最短路 Floyd算法: O(n^3)Dijkstra#include<bits/stdc++.h>#define ll long l...原创 2020-07-13 19:48:55 · 155 阅读 · 0 评论