首页 > 编程语言 >UVA 11594(All Pairs Maximum Flow-两两之间的最大流,Gusfield算法)

UVA 11594(All Pairs Maximum Flow-两两之间的最大流,Gusfield算法)

时间:2022-10-24 19:35:19浏览次数:50  
标签:Pairs return int Flow Maximum long ans include define


已知一个n<=100个点的无向图,求任意两点间的最大流(最小割)
Gusfield专门解决这类问题

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<functional>
#include<vector>
#include<iostream>
#include<cmath>
#include<set>
#include<cctype>
#include<ctime>
using namespace std;
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
typedef long long ll;
long long mul(long long a,long long b){return (a*b)%F;}
long long add(long long a,long long b){return (a+b)%F;}
long long sub(long long a,long long b){return (a-b+(a-b)/F*F+F)%F;}
int gmin(int &a,int b) {return a=min(a,b);}
int read()
{
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
class Max_flow //dinic+锟斤拷前锟斤拷锟脚伙拷
{
public:
int n,t;
int q[MAXN];
int edge[MAXM],Next[MAXM],Pre[MAXN],weight[MAXM],size;
void addedge(int u,int v,int w)
{
edge[++size]=v;
weight[size]=w;
Next[size]=Pre[u];
Pre[u]=size;
}
void addedge2(int u,int v,int w){addedge(u,v,w),addedge(v,u,0);}
bool b[MAXN];
int d[MAXN];
bool SPFA(int s,int t)
{
For(i,n) d[i]=INF;
MEM(b)
d[q[1]=s]=0;b[s]=1;
int head=1,tail=1;
while (head<=tail)
{
int now=q[head++];
Forp(now)
{
int &v=edge[p];
if (weight[p]&&!b[v])
{
d[v]=d[now]+1;
b[v]=1,q[++tail]=v;
}
}
}
return b[t];
}
int iter[MAXN];
int dfs(int x,int f)
{
if (x==t) return f;
Forpiter(x)
{
int v=edge[p];
if (weight[p]&&d[x]<d[v])
{
int nowflow=dfs(v,min(weight[p],f));
if (nowflow)
{
weight[p]-=nowflow;
weight[p^1]+=nowflow;
return nowflow;
}
}
}
return 0;
}
int max_flow(int s,int t)
{
(*this).t=t;
int flow=0;
while(SPFA(s,t))
{
For(i,n) iter[i]=Pre[i];
int f;
while (f=dfs(s,INF))
flow+=f;
}
return flow;
}
void mem(int n)
{
(*this).n=n;
size=1;
For(i,n) Pre[i]=0;
}
}S;
int n,m,f[MAXN];
int g[MAXN][MAXN];
int ans[MAXN][MAXN];
int cut(int u,int v){
S.mem(n);
For(i,n) For(j,n) if (i!=j){
S.addedge2(i,j,g[i][j]);
}
return S.max_flow(u,v);
}
int main()
{
// freopen("uva11594.in","r",stdin);
// freopen(".out","w",stdout);
int T=read();
For(tcase,T) {
printf("Case #%d:\n",tcase);
n=read();
MEMI(ans) For(i,n) ans[i][i]=0;
For(i,n) For(j,n) g[i][j]=read();

For(i,n) f[i]=1;
Fork(i,2,n) {
int v=f[i];
int p=cut(i,v);
vi v1,v2;
For(j,n) if (1) {
if (S.b[j]) v1.pb(j);
else v2.pb(j);
}
// Rep(i,SI(v1)) cout<<v1[i]<<' ';cout<<endl;
// Rep(j,SI(v2)) cout<<v2[j]<<' ';cout<<endl;

Rep(i,SI(v1)) Rep(j,SI(v2)) {
gmin(ans[v1[i]][v2[j]],p);
gmin(ans[v2[j]][v1[i]],p);

}
// For(j,i) gmin(ans[i][j],min(p,ans[f[i]][j])),gmin(ans[j][i],min(p,ans[f[i]][j]));
Fork(j,i,n) {
if (f[j]==v&&S.b[j]) f[j]=i;
}
}
For(i,n) {
For(j,n-1) printf("%d ",ans[i][j]);
printf("%d\n",ans[i][n]);
}

}
return 0;
}


标签:Pairs,return,int,Flow,Maximum,long,ans,include,define
From: https://blog.51cto.com/u_15724837/5791032

相关文章

  • Parallerl Flow
    准备两个Filterknservicecreateimage-filter--imagevillardl/filter-nodejs:0.1--envFILTER='event.type=="com.yang.file.image"'--scale-min=1knservicecr......
  • 【Flowable】流程相关表
    流程相关表​ Flowable框架使用到的表都是以act_开头的表,在项目中大部分表是没有利用到的,下面列举利用到的表。act_de_*act_de_model​ 保存了流程模型设计器中的数......
  • Tensorflow Lite从入门到精通
    TensorFlowLite是TensorFlow在移动和IoT等边缘设备端的解决方案,提供了Java、Python和C++API库,可以运行在Android、iOS和RaspberryPi等设备上。目前TF......
  • Sequence Flow示例
    准备实践环境[root@master~]#knservicecreatesq-appender-01--imageikubernetes/appender--envMESSAGE="-HandledbySQ-01"Creatingservice'sq-appender-0......
  • 【解决】CICD、GitHub actions workflow新建仓库push时报错could not read Username f
    git报错fatal:couldnotreadUsernamefor'https://github.com':Nosuchdeviceoraddress原因是没有GitHubtoken,而且cicd时无法输入用户密码正常来说我们使用act......
  • 按照tensorflow jupyer
    anaconda 安装包 链接:https://pan.baidu.com/s/1wh6mYu1uMLlPM5Ai5ONCXQ提取码:3rlo 两个库pipinstalltensorflow==2.8.0keras==2.8-ihttps://pypi.douban.co......
  • Tensorflow解析tfrecord
    1、序列化#coding:utf-8from__future__importabsolute_importfrom__future__importdivisionfrom__future__importprint_functionimportnumpyasnpimpor......
  • win11+cuda11.2+cudnn+Tensorflow-GPU 环境配置
    名词解释CUDA即英伟达的显卡并行计算框架,nvidia-smi可以查看tensorflow-gpu的运行需要它的底层支持,它是一个计算框架,抽象层次比驱动高,每个版本的CUDA都是基于一定版......
  • AtCoder Beginner Contest 263 Erasing Prime Pairs
    AtCoder传送门洛谷传送门题意有\(i\)种数,第\(i\)种数是\(a_i\),有\(b_i\)个。每次可以选择两个数\(x,y\)满足\(x+y\)为质数,将它们删除。问最多能删多少次。......
  • 好玩的文字流程图:flowchart-fun
    流程图/思维导图让工作变得高效。但是,绘制流程图/思维导图的方式能不能更高效一些呢?比如,随手敲字,就自动生成简洁明了的可伸缩矢量图。现在,一款名叫flowchart.fun的网页......