博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P2045 方格取数加强版
阅读量:4965 次
发布时间:2019-06-12

本文共 2073 字,大约阅读时间需要 6 分钟。

P2045 方格取数加强版


傻逼题。

每个点拆成入点a和出点b,S向a(1,1)连边,b(n,n)向T连边。流量为k,费用为0.

由于点只能去一次,所以a(i,j)向b(i,j)连一条1流量-A[i][j]费用的边,再连一条k-1流量0费用的边。

再就是每个出点都向相邻入点连一条流量k费用0的边。

// It is made by XZZ#include
#include
#include
#define il inline#define rg register#define vd void#define sta statictypedef long long ll;il int gi(){ rg int x=0,f=1;rg char ch=getchar(); while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar(); while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*f;}const int maxn=50*50*2+10,maxm=1e7,S=maxn-2,T=maxn-1;int num[51][51];int fir[maxn],dis[maxm],nxt[maxm],w[maxm],cost[maxm],id=1;il vd link(int a,int b,int c,int d){ nxt[++id]=fir[a],fir[a]=id,dis[id]=b,w[id]=c,cost[id]=d; nxt[++id]=fir[b],fir[b]=id,dis[id]=a,w[id]=0,cost[id]=-d;}il bool SPFA(int&Cost){ sta int que[10000000],hd,tl,lst[maxn],dist[maxn]; sta bool inque[maxn]={0}; memset(dist,63,sizeof dist); dist[S]=0; hd=tl=0;que[tl++]=S;inque[S]=1; while(hd^tl){ int x=que[hd]; for(rg int i=fir[x];i;i=nxt[i]){ if(w[i]&&dist[dis[i]]>dist[x]+cost[i]){ dist[dis[i]]=dist[x]+cost[i];lst[dis[i]]=i; if(!inque[dis[i]])inque[dis[i]]=1,que[tl++]=dis[i]; } } inque[x]=0;++hd; } if(dist[T]==dist[0])return 0; int flow=1e9; for(rg int i=lst[T];i;i=lst[dis[i^1]])flow=std::min(flow,w[i]); for(rg int i=lst[T];i;i=lst[dis[i^1]])w[i]-=flow,w[i^1]+=flow,Cost+=flow*cost[i]; return 1;}il vd Mincost(int&cst){cst=0;while(SPFA(cst));}int main(){#ifdef xzz freopen("2045.in","r",stdin); freopen("2045.out","w",stdout);#endif int n=gi(),k=gi(); for(rg int i=1;i<=n;++i) for(rg int j=1;j<=n;++j) num[i][j]=++num[0][0],++num[0][0]; for(rg int i=1;i<=n;++i) for(rg int j=1;j<=n;++j) link(num[i][j],num[i][j]+1,1,-gi()),link(num[i][j],num[i][j]+1,k-1,0); link(S,num[1][1],k,0); link(num[n][n]+1,T,k,0); for(rg int i=1;i<=n;++i) for(rg int j=1;j

转载于:https://www.cnblogs.com/xzz_233/p/8718873.html

你可能感兴趣的文章
Fireworks基本使用
查看>>
两台电脑间的消息传输
查看>>
Linux 标准 I/O 库
查看>>
.net Tuple特性
查看>>
Java基础常见英语词汇
查看>>
iOS并发编程笔记【转】
查看>>
08号团队-团队任务5:项目总结会
查看>>
SQL2005 删除空白行null
查看>>
mysql备份与恢复
查看>>
混沌分形之迭代函数系统(IFS)
查看>>
边框圆角Css
查看>>
使用Busybox制作根文件系统
查看>>
jpg图片在IE6、IE7和IE8下不显示解决办法
查看>>
delphi之模糊找图
查看>>
Javascript模块化编程的写法
查看>>
oracle 使用job定时自动重置sequence
查看>>
在项目中加入其他样式
查看>>
OMAPL138学习----DSPLINK DEMO解析之SCALE
查看>>
restframework CBV试图的4种方式
查看>>
大图居中,以1920px为例
查看>>