
图论
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 · 590 阅读 · 0 评论 -
第六周周赛 lca 强连通 最小生成树 最短路
1008: hdu2544 floy算法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 · 685 阅读 · 0 评论 -
poj1273
最大流的入门题,第一次写了下ek算法,用了邻接矩阵。 EK算法的复杂度为O(n*m^2) 代码: //EK算法求最大流问题二维数组实现 #include #include #include #include #define INF 10000 #define maxn 205 using namespace std; int n,m; int path[maxn][maxn],pre[m原创 2013-04-28 21:25:21 · 586 阅读 · 0 评论 -
hdu1054
二分匹配,求最大点独立集合,边是双向边,每个点用了两次,最后除以二。 代码: #include #include #include #include #define maxn 1505 using 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 · 729 阅读 · 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 · 630 阅读 · 0 评论 -
floyd算法
floyd算法能求多源点最短路,复杂度为O(n^3) 初始化设每条边为INF void 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 · 530 阅读 · 0 评论 -
Dijstra算法
Dijstra算法求单源点最短路,复杂度为O(n*n+m),用优先级队列优化后为O(n*logn). 首先建立一个集合S,当所有的点都在集合S中时,则算法结束. 1.找不在S集合中的点与s有最短距离的点m 2.更新.dis[m]=min(dis[m]+map[m][i],dis[i]),pre[i]=m; 这里写了下不完全的代码。 #include #include #include原创 2013-05-06 16:40:08 · 1500 阅读 · 0 评论 -
poj1201差分系统
差分约束系统: 1.输入的边 2.每个相邻点的边 3.每个点与源点的边 #include #include #include #include #include #define INF 0x7fffffff #define maxn 50005 using namespace std; struct node { int v,c; }; vectorg[maxn]; int t;原创 2013-05-08 22:02:33 · 520 阅读 · 0 评论