
图论
文章平均质量分 60
zjck1995
这个作者很懒,什么都没留下…
展开
-
hdu HDU 5294 - Tricks Device(最短路+最小割)
题意:n个点,m条边,构建有权无向图。求出删去最少条边数可以使得图没有最短路径,以及删出最多条边使得图仍有最多条路径。思路:最短路处理出最短路径图,做法是使用dis数组,若若dis[v]-dis[u] = w(u,v),则该路在最短路径中。建出最短路径之后 跑一次网络流,得到第一个答案。在跑最短路中记录最短路的最少路数,ans2 = m - minb.#include转载 2015-07-28 08:57:06 · 329 阅读 · 0 评论 -
二分图最大匹配,最小点覆盖,最大独立集 证明
二分图中:最小点覆盖=最大匹配 ,最小点覆盖是指找到一个最小的点集,使得与这些集合中的点相连的边覆盖图G中的所有边证明: 1 最小点覆盖大于等于最大匹配 假设u和v是最大匹配中,某一条匹配边的两个端点,则u和v不可能同时与非匹配点有边相连,否则最大匹配数目至少要增加1,矛盾。即u和v最多只有一个点可以与若干条非匹配点相连接,因此,只需要选择有连接非匹配点的点进入最小点覆盖集合就可原创 2016-02-11 13:38:18 · 856 阅读 · 1 评论 -
hdu 2767强连通分量
#include #include #include #include #include#include #include #include #include #include #include #include #include using namespace std;const int N=2e4+10;const int M=1e6+10;struct Edg原创 2016-01-30 12:07:44 · 410 阅读 · 0 评论 -
hdu1269 tarjan算法
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;const int N=1e4+10;const int M=1e5+10;struct Edge{ int t原创 2016-01-29 20:16:09 · 362 阅读 · 0 评论 -
poj2449 第k最短路,A*算法
估值函数 f(n)=g(n)+h(n) ,f 表示从s到t经过点n的估值代价,g(n)表示从s到n的估值代价,h(n)表示从n到t的最优代价,即到t的最短路的长度/* ***********************************************Author :ckCreated Time :2016年01月11日 星期一 16时39分56秒*****原创 2016-01-11 17:31:06 · 593 阅读 · 0 评论 -
hdu1532 网络流入门 dinic
#include #include#include#include#include#include#include#includeusing namespace std;const int N=405;const double esp=1e-8;int n,m;int head[N];int tot;int INF=2e9+10;void init(){ me原创 2015-10-24 20:41:38 · 351 阅读 · 0 评论 -
hdu3499 分层图
#includeusing namespace std;#define rd(x) scanf("%d",&x)#define rdd(x,y) scanf("%d%d",&x,&y)#define rddd(x,y,z) scanf("%d%d%d",&x,&y,&z)#define rds(s) scanf("%s",s)#define rep(i,n) for(int i=0;i原创 2015-09-19 22:52:41 · 531 阅读 · 0 评论 -
hdu5325 找树中的最大集合
较小权值到较大权值连一条边,找每个点能够到达的最多的点数,取最大值#pragma comment(linker, "/STACK:102400000,102400000")#include #include#include#include#include#include#include#include#define lson l,m,rt<<1#define rson m+原创 2015-08-03 20:52:08 · 336 阅读 · 0 评论 -
hdu5285 二分图的判定
题意:有一群人,已知某两人之间互相不认识,要把这群人分成两部分,每部分至少一人,且在每部分内没有人互不认识。#include #include#include#includeusing namespace std;const int N=100005; int T,n,m; vector V[N]; int col[N]; int b[2],f,r; int q[N];原创 2015-07-23 16:27:56 · 524 阅读 · 0 评论 -
hdu 5424 哈密顿路径
给n个点,n条边,问是否存在哈密顿路径,即存在一条路径使得所有点只经过一遍,先判断是否连通,再从最小的度数进行dfs#include#include#include#include#include#include#include#include#includeusing namespace std;#define rep(i,n) for(int i=0;i<n;i++)原创 2015-08-30 17:50:27 · 1667 阅读 · 0 评论 -
hdu5385 巧妙的构造
第i个点距离1号点的最短路距离记为d(i) 求使得 d(1)d(x+1)>.....d(n)的边的构造方案从左右两边往中间找,若当前点可被之前访问过的点到达的话,就将它的dis值记为之前访问过的最大的dis值加1#pragma comment(linker, "/STACK:102400000,102400000")#include #include#include#include原创 2015-08-15 18:05:29 · 670 阅读 · 0 评论 -
hdu4606 计算几何+二分+二分图匹配+最短路
#include #include #include #include #include #include #include #include #include #include #include #include #includeusing namespace std;const int N=1e2+10;const int M=1<<21;const int I原创 2016-02-12 16:45:55 · 376 阅读 · 0 评论