传送门 完了这题好厉害……字符串什么的好麻烦…… 要求从$1$到$n$的路径,不重复,经过边数最多 每一个点拆成两个,$A_i,B_i$,然后$A_i$到$B_i$连容量为$1$,费用为$1$的边,保证每个点只被选一次 然后$1$和$n$的话要容量为$2$ 然后有连边的话,$B_i$向$A_j$连边,容量$1$,费用$1$ 要选的点最多,那么就是要费用最大,所以跑一个最大费用流 然后找方案的话,直接dfs,然后正着和倒着输出 有几个细节,写在代码里了 //minamoto #include<io…
记得cnt=1!!因为是无向图所以可以把回来的路看成另一条向东的路.字符串用map处理即可.拆点限制流量,除了1和n是(i,i+n,2)表示可以经过两次,其他点都拆成(i,i+n,1),费用设为1,原图中的边(i,j)连接(i+n,j,1),注意特判掉i==q&&j==nst直接相连的情况,流量要设为2,然后跑最大费用最大流,如果流量小于2就是无解,否则分别从s和tdfs输出方案. 记得输出方案前先输出一次起点. #include<iostream> #include<c…
题意 $n$个点从左向右依次排列,有$m$条双向道路 问从起点到终点,再从终点回到起点,在经过的点不同的情况下最多能经过几个点 Sol 首先,问题可以转化为求两条互不相交的路径,使得点数最多 为了满足流量的限制,肯定会想到拆点,把每个点拆为两个,连流量为$1$,费用为$1$的边 起点和终点连费用为1,流量为2的边 输出方案比较蛋疼,我是dfs两次,然后第二次倒着输出 但是$a->c->a$这种情况会WA,so只好打表喽 #include<cstdio> #include<al…
Code: #include<cstdio> #include<iostream> #include<algorithm> #include<vector> #include<cstring> #include<queue> #include<string> #include<map> using namespace std; const int maxn=800; const int INF=1000000+…
原题链接 题意简述 模板题啦~ 题解 每次都以费用作为边权求一下最短路,然后沿着最短路增广. Code //[模板]最小费用最大流 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; inline char gc() { static char now[1<<16],*S,*T; if(S==T) {T=(S=now)+fread(now,1,1<…
题解 最小费用最大流 n和m是反着的 首先, \[ ans = \sum{cost[i][j]}*k \] 其中,\(k\)为它在当前技术人员那里,排倒数第\(k\)个修 我们可以对于每个技术人员进行拆点, 对于每个技术人员的各个点,表示倒数第几次修 然后每个人连向技术人员,显然花费是根据连的点来算的 然后就是二分图带权最小匹配了 我只会Dinic Code #include<bits/stdc++.h> #define LL long long #define RG register usi…
题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行包含四个正整数ui.vi.wi.fi,表示第i条有向边从ui出发,到达vi,边权为wi(即该边最大流量为wi),单位流量的费用为fi. 输出格式: 一行,包含两个整数,依次为最大流量和在最大流量情况下的最小费用. 输入输出样例 输入样例#…
题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 输入输出格式 输入格式: 第一行包含四个正整数\(N.M.S.T\),分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来\(M\)行每行包含四个正整数\(u_i.v_i.w_i.f_i\),表示第i条有向边从\(u_i\)出发,到达\(v_i\),边权为\(w_i\)(即该边最大流量为\(w_i\)),单位流量的费用为\(f_i\). 输出格式: 一行,包…
题意 一家餐厅,第$i$天需要$r_i$块餐巾,每天获取餐巾有三种途径 1.以$p$的费用买 2.以$f$的费用送到快洗部,并在$m$天后取出 3.以$s$的费用送到慢洗部,并在$n$天后取出 问满足要求时的最小费用 Sol 一道非常不错的网络流,应该不难看出是费用流. 首先进行拆点,把每个点早上和晚上,然后进行连边 从$S$向i连边$(0, r_i)$,表示到了晚上有$r_i$块脏餐巾 从$i'$向$T$连边$(0, r_i)$,表示早上有$r_i$块新餐巾 从$S$向$i'$连边$(p, I…
题目描述 GG 公司有 nn 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等.如何用最少搬运量可以使 nn 个仓库的库存数量相同.搬运货物时,只能在相邻的仓库之间搬运. 输入输出格式 输入格式: 文件的第 11 行中有 11 个正整数 nn ,表示有 nn 个仓库. 第 22 行中有 nn 个正整数,表示 nn 个仓库的库存量. 输出格式: 输出最少搬运量. 输入输出样例 输入样例#1: 复制 5 17 9 14 16 4 输出样例#1: 复制 11 说明 1 \leq n \leq…