![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
文章平均质量分 60
yc5_yc
这个作者很懒,什么都没留下…
展开
-
POJ 3469 第一次AC总结(Dinic+多路增广)
这题是道神题,神就神在,它既能让你搞懂网络流及其优化,还给了你很大的优化空间。首先,说一下算法,这题就是一道最小割+简单构图的题目,增加两个节点分别表示两个CPU,第i个界点与两个CPU各连接一条,边权值分别为Ai、Bi,在后面的输入中要分别给ab和ba都连接一条权值为w的边(注意不要再连反向边了),然后用你建的图求最大流即可,这回我用的是Dinic求解。下面便是优化,这题的优化最有学问,这次原创 2012-04-09 19:06:05 · 1289 阅读 · 0 评论 -
Bellman-Ford算法判断负权回路
原来学过最短路算法,Dijkstra和Bellman-Ford算法都没认真学,只为了贪图效率和实用,学了个SPFA算法,从而忽略了另外两个算法的一些特性。今天在POJ上偶然遇到了一道题,求是否有负权回路,一点思路也没有,只能看别人的解题报告,发现了Bellman-Ford算法竟能解决这类问题,先对整个图松弛N-1次,再看看还有没有可松弛的边,有的话即是这个图存在负权回路。这次给我的教训就是:学原创 2012-05-02 18:58:24 · 956 阅读 · 0 评论 -
POJ3041 二分图最大匹配(网络流算法)
这题可以先构造一个二分图,它的|X|=|Y|=N,每当输入一个数对(x,y)时,连接一条x->y的边,求最小点覆盖即可。最小点覆盖:对于一个二分图中的每一条边(u,v)都选其中一个顶点(多条边可以选同一点),使得选择的所有点的集合(无重复)元素的数量最小。——我想我已经解释地很清楚了……最小点覆盖相当于最大匹配(证明见《算法艺术与信息学竞赛》,《算法导论》……),最大匹配我是用网络流(弱智原创 2012-05-02 21:16:38 · 2220 阅读 · 0 评论 -
POJ2513 欧拉图入门
题目大意:给定一系列sticks,每个木棒的两端都涂有颜色,判断是否能够找到将所有的木棒连接起来的方法,使相互连接的木棒的两端的颜色是相同的?现在要解决的问题是找到一条路径,遍历图的每条边一次,即欧拉路问题要存在欧拉路就要满足:1.该图必须是一个连通图2.该图每个点的度数要么全为偶数,要么有且仅有两个点的度数为奇数 在实际编程过程中,使用map提交时超时,最后只好选择T转载 2012-05-05 09:28:42 · 682 阅读 · 0 评论 -
最小费用最大流模版
struct edge{ int num,len,C; edge *next,*rev;}*S[nnMax],pool[MMax];int d[nnMax];edge *P[nnMax];bool inq[nnMax];queue Q;void build_edge(int x,int y,int z,int C){ edge *p=&原创 2012-05-27 20:03:41 · 365 阅读 · 0 评论 -
最大费用最大流模版(POJ 3422)
struct edge{ int num,len,C; edge *next,*rev;}*S[nnMax],pool[MMax];void build(int x,int y,int z,int C){ edge *p=&pool[L++],*q=&pool[L++]; p->num=y;p->len=z;p->C=C;p->next=S[原创 2012-05-27 21:34:19 · 417 阅读 · 0 评论 -
stoer wagner代码
合并的代码很容易写错!#include #include #include #include using namespace std;const int NMax=550;int N,M,G[NMax][NMax],dist[NMax],map[NMax];bool inA[NMax];int Dinic() {//1.min=MAXINT,固定一个顶点P原创 2013-01-13 13:40:37 · 414 阅读 · 0 评论