分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

[BZOJ1570][JSOI2008]Blue Mary的旅行

发布时间:2023-09-06 01:48责任编辑:郭大石关键词:暂无标签

bzoj

sol

每天每座城市建一个点,该怎么连边就怎么连边,每次只需要在上一次的残余网络上跑最大流,所以复杂度不会太高。

code

#include<cstdio>#include<algorithm>#include<cstring>#include<queue>using namespace std;int gi(){ ???int x=0,w=1;char ch=getchar(); ???while ((ch<'0'||ch>'9')&&ch!='-') ch=getchar(); ???if (ch=='-') w=0,ch=getchar(); ???while (ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar(); ???return w?x:-x;}const int N = 1e5+5;const int inf = 1e9;struct edge{int to,nxt,w;}a[N<<5];int n,m,num,uu[N],vv[N],ww[N],id[51][2018],tot,S,T,head[N],cnt=1,dep[N],cur[N],flow,ans;queue<int>Q;void link(int u,int v,int w){ ???a[++cnt]=(edge){v,head[u],w}; ???head[u]=cnt; ???a[++cnt]=(edge){u,head[v],0}; ???head[v]=cnt;}bool bfs(){ ???memset(dep,0,sizeof(dep)); ???dep[S]=1;Q.push(S); ???while (!Q.empty()) ???{ ???????int u=Q.front();Q.pop(); ???????for (int e=head[u];e;e=a[e].nxt) ???????????if (a[e].w&&!dep[a[e].to]) ???????????????dep[a[e].to]=dep[u]+1,Q.push(a[e].to); ???} ???return dep[T];}int dfs(int u,int f){ ???if (u==T) return f; ???for (int &e=cur[u];e;e=a[e].nxt) ???????if (a[e].w&&dep[a[e].to]==dep[u]+1) ???????{ ???????????int tmp=dfs(a[e].to,min(a[e].w,f)); ???????????if (tmp) {a[e].w-=tmp;a[e^1].w+=tmp;return tmp;} ???????} ???return 0;}int Dinic(){ ???int res=0; ???while (bfs()) ???{ ???????for (int i=1;i<=tot;++i) cur[i]=head[i]; ???????while (int tmp=dfs(S,inf)) res+=tmp; ???} ???return res;}int main(){ ???n=gi();m=gi();num=gi(); ???for (int i=1;i<=m;++i) uu[i]=gi(),vv[i]=gi(),ww[i]=gi(); ???S=++tot;T=++tot; ???for (int i=1;i<=n;++i) id[i][0]=++tot; ???link(S,id[1][0],num); ???while (++ans) ???{ ???????for (int i=1;i<=n;++i) id[i][ans]=++tot,link(id[i][ans-1],id[i][ans],inf); ???????for (int i=1;i<=m;++i) link(id[uu[i]][ans-1],id[vv[i]][ans],ww[i]); ???????link(id[n][ans],T,num);flow+=Dinic();if (flow==num) break; ???} ???printf("%d\n",ans);return 0;}

[BZOJ1570][JSOI2008]Blue Mary的旅行

原文地址:https://www.cnblogs.com/zhoushuyu/p/8724604.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved