随笔分类 - 最小生成树
摘要:思路:我也不知道叫什么树,但是构造过程能理解。我们可以将先将边按降序排序,那么就用kruskaer构造生成树。构造好的生成树也就是满足条件的图,因为点i,j的最大流量就是生成树上点i到点j的路径上的最小权值边。但如果存在f[i][j]#include#include#include#include#include#include#include#include#include#include#define pb push_back#define mp make_pair#define Maxn 110#define Maxm 200010#define LL __int64#define Ab
阅读全文
摘要:思路:直接先求一下最小生成树,然后用树形dp来求最优值。也就是两遍dfs。#include#include#include#include#include#define Maxn 2010using namespace std;struct Edge{ int u,v; double c; int operator Max[u]){ lMax[u]=Max[u]; Max[u]=Max[v]; road[u]=v; } else if(Max[v]>lMax[u]){ ...
阅读全文
摘要:思路:直接状态压缩暴力枚举#include#include#include#include#define Maxn 30#define inf 10000000using namespace std;int ans,n,m;int c,d;int map[Maxn][Maxn];int lis[Maxn],node[Maxn];int val[1m) continue; if(cnt==m) { int a=val[i],b=sum[i]; if(a*d<c*b){ ...
阅读全文
摘要:次小生成树的求法:1.Prime法定义一个二维数组F[i][j]表示点i到点j在最小生成树中的路径上的最大权值。有个知识就是将一条不在最小生成树中的边Edge加入最小生成树时,树中要去掉的边就是Edge连接的两个端点i,j的F[i][j]。这样就能保存找到的生成树时次小生成树。代码如下:#include#include#include#include#include#define inf 1map[index][j]) { dist[j]=map[index][j]; pre[j]=index; ...
阅读全文

浙公网安备 33010602011771号