图论
SimpleLifeT_T
github账号:lihongqiang
展开
-
第七周周赛之二分匹配
最大匹配,最小点覆盖,最大点独立,最小边覆盖,最大边独立,最小路径覆盖最大匹配:匈牙利算法最小点覆盖=最大匹配最大点独立=n(顶点数)-最小点覆盖最大边独立=n-最小边覆盖最小路径覆盖=p(n/2)-最大匹配 (p*p的有向图)1001:hdu1150:http://acm.hdu.edu.cn/showproblem.php?pid=1150最大匹配等于最小点覆原创 2013-04-22 23:27:35 · 552 阅读 · 0 评论 -
第六周周赛 lca 强连通 最小生成树 最短路
1008:hdu2544floy算法o(n^3),注意下最外层循环是k代码:#include#include#include#include#include#include#include#include#include#define INF 0x7fffffff#define maxn 105#define maxl 0x7fffffff#define原创 2013-04-23 23:21:15 · 652 阅读 · 0 评论 -
poj1273
最大流的入门题,第一次写了下ek算法,用了邻接矩阵。EK算法的复杂度为O(n*m^2)代码://EK算法求最大流问题二维数组实现#include#include#include#include#define INF 10000#define maxn 205using namespace std;int n,m;int path[maxn][maxn],pre[m原创 2013-04-28 21:25:21 · 547 阅读 · 0 评论 -
hdu1054
二分匹配,求最大点独立集合,边是双向边,每个点用了两次,最后除以二。代码:#include#include#include#include#define maxn 1505using namespace std;vector g[maxn];int vis[maxn];int link[maxn];bool getnum(int u){ for(int i=0;原创 2013-05-06 14:50:16 · 679 阅读 · 0 评论 -
Bellman算法ZOJ2770
差分约束系统c[n]表示每个点的容量,d[n]表示前n个点的容量和,x[n]表示第n个点的人数,s[n]表示前n个点的人数和。因为是求最大值,左右约束条件写成小于的形式,求最短路。约束条件:1.s[i]-s[i-1]=c[i];2.s[i]-s[i-1]>=0, 即s[i-1] 增加边=0;3,s[j]-s[i-1]>=k, 即s[i] 增加边=k;原创 2013-05-07 21:23:40 · 590 阅读 · 0 评论 -
floyd算法
floyd算法能求多源点最短路,复杂度为O(n^3)初始化设每条边为INFvoid floyd(int map[][],int n ){ for(int k=1;k<=n;k++) { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) {原创 2013-05-06 16:06:17 · 496 阅读 · 0 评论 -
Dijstra算法
Dijstra算法求单源点最短路,复杂度为O(n*n+m),用优先级队列优化后为O(n*logn).首先建立一个集合S,当所有的点都在集合S中时,则算法结束.1.找不在S集合中的点与s有最短距离的点m2.更新.dis[m]=min(dis[m]+map[m][i],dis[i]),pre[i]=m;这里写了下不完全的代码。#include#include#include原创 2013-05-06 16:40:08 · 1434 阅读 · 0 评论 -
poj1201差分系统
差分约束系统:1.输入的边2.每个相邻点的边3.每个点与源点的边#include#include#include#include#include#define INF 0x7fffffff#define maxn 50005using namespace std;struct node{ int v,c;};vectorg[maxn];int t;原创 2013-05-08 22:02:33 · 488 阅读 · 0 评论