很显然是网络流,对于点的限制,拆点建流量为1的边,之后跑最小费用最大流即可(由此很显然可以发现原图边的流量也只需要1) 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define N 405 4 struct ji{ 5 int nex,to ...
分类:
其他好文 时间:
2019-11-10 17:13:08
阅读次数:
75
最小割,考虑最小割就是要将整张图分为两块,本题中就分别表示赞同和不赞同,那么首先一开始赞同的点向S连边,不赞同的点向T连边,如果这些点分到了另一边就要割掉这条边,朋友关系同理,连双向边同样表示分到两边要割掉这条边,跑最小割=最大流即可 1 #include<bits/stdc++.h> 2 usin ...
分类:
其他好文 时间:
2019-11-10 15:51:46
阅读次数:
72
下午遇到了 LuoguP3597和LuoguP4159 这应该是我在网络流后第二次遇到的拆点。这两道题是结合邻接矩阵和拆点。 邻接矩阵有一个性质:设邻接矩阵A,则在矩阵Ak中,点aij的值表示从点i到j长度为k的通路数量。长度表示边的个数。 P4159 要求的是:在有向图中,从起点到终点的路径权值和 ...
分类:
其他好文 时间:
2019-11-09 23:17:40
阅读次数:
94
1 #include<iostream> 2 #include<queue> 3 #include<cstring> 4 using namespace std; 5 6 const int maxn = 60; 7 8 const int INF = 0x3f3f3f3f; 9 int n; 10 ...
分类:
其他好文 时间:
2019-11-09 00:12:46
阅读次数:
78
void add_dinic(int u, int v) { e[++cnt].v = v; e[cnt].w = 0; e[cnt].nxt = head[u]; head[u] = cnt; } int dfs_dinic(int x, int flow) { if (x == ed) retu ...
分类:
编程语言 时间:
2019-11-09 00:03:06
阅读次数:
114
..突然发现自己拖了很久都没有学习有关网络流的东西了,所以先从模板开始写起吧. dinic code: #include<iostream> #include<cstring> #include<queue> #define INF 0x3f3f3f3f const int MAXN = 1e6+5 ...
分类:
其他好文 时间:
2019-11-07 18:50:47
阅读次数:
73
这道题跟求最大流的时候差不多。 都是先构造可行流,然后判断是否可行, 可行的话,就利用残余流量,构造从汇点t跑到源点s的最大流, 如何求出答案呢。 在第一次求可行流的dinic后,跟求最大流的时候一样,从t到s是可行流的流量; 这个时候t到s的反向边,也就是s到t的流量就是t到s流的量(因为t到s定 ...
分类:
其他好文 时间:
2019-11-06 22:28:04
阅读次数:
106
二分+最大流: 1 //题目大意:有编号为1~n的女生和1~n的男生配对 2 // 3 //首先输入m组,a,b表示编号为a的女生没有和编号为b的男生吵过架 4 // 5 //然后输入f组,c,d表示编号为c的女生和编号为d的女生是朋友 6 // 7 //进行配对的要求满足其一即可。 8 //1.a ...
分类:
其他好文 时间:
2019-11-06 16:44:23
阅读次数:
70
string fileext = CSA_BLL.Common.Utils.GetFileExt(filePath); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(filePath); request.Method = "GE ...
分类:
其他好文 时间:
2019-11-06 13:13:11
阅读次数:
105
P4016 负载平衡问题 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn = 1005, inf = 0x3f3f3f3f; 4 struct Edge { 5 int from, to, cap, flow, c ...
分类:
其他好文 时间:
2019-11-05 21:53:08
阅读次数:
70