【codevs1034】星际转移问题(家园)(网络流)
来源:互联网 发布:淘宝html代码生成器 编辑:程序博客网 时间:2024/04/30 20:04
题目:
我是超链接
题解:
建图如下
枚举时间点,因为飞船在跑,由st[i][t]到st[next[i]][t+1]连边
人们也可以蹲在太空站里,st[i][t]到st[i][t+1]连边
然后就是最大流啦
代码:
#include <cstdio>#include <cstring>#include <queue>#include <iostream>#define INF 1e9using namespace std;int p[55],tim,deep[50005],point[50005],cur[50005],tot=-1,r[55][55],next[50005],v[50005],remind[50005];int n,m,k;void addline(int x,int y,int cap){ ++tot; next[tot]=point[x]; point[x]=tot; v[tot]=y; remind[tot]=cap; ++tot; next[tot]=point[y]; point[y]=tot; v[tot]=x; remind[tot]=0;}int addflow(int t,int now,int limit){ if (!limit||now==t) return limit; int f=0,flow=0; for (int i=cur[now];i!=-1;i=next[i]) { cur[now]=i; if (deep[v[i]]==deep[now]+1 && (f=addflow(t,v[i],min(remind[i],limit)))) { flow+=f; limit-=f; remind[i]-=f; remind[i^1]+=f; if (!limit) break; } } return flow; }bool bfs(int s,int t){ queue <int> q; q.push(s); memset(deep,0x7f,sizeof(deep)); deep[s]=0; while (!q.empty()) { int now=q.front();q.pop(); for (int i=point[now];i!=-1;i=next[i]) if (remind[i] && deep[v[i]]>INF) { deep[v[i]]=deep[now]+1; q.push(v[i]); } } if (deep[t]<INF) for (int i=1;i<=m*tim;i++) cur[i]=point[i]; cur[s]=point[s]; cur[t]=point[t]; return deep[t]<INF;}int main(){ int i,j; memset(point,-1,sizeof(point)); memset(next,-1,sizeof(next)); scanf("%d%d%d",&n,&m,&k); for (i=1;i<=m;i++) { scanf("%d%d",&p[i],&r[i][0]); for (j=1;j<=r[i][0];j++) { scanf("%d",&r[i][j]); if (r[i][j]<=0) r[i][j]+=5000; } } int s=5000,t=4999,we=0; tim=0; while ((++tim)<=600) { for (i=1;i<=m;i++) { int x,y; if (r[i][(tim-1)%r[i][0]+1]==s) x=s; else if (r[i][(tim-1)%r[i][0]+1]==t) x=t; else x=(tim-1)*n+r[i][(tim-1)%r[i][0]+1]; if (r[i][tim%r[i][0]+1]==s) y=s; else if (r[i][tim%r[i][0]+1]==t) y=t; else y=tim*n+r[i][tim%r[i][0]+1]; addline(x,y,p[i]); } for (i=1;i<=n;i++) addline((tim-1)*n+i,(tim-1)*n+i+n,INF); while (bfs(s,t)) we+=addflow(t,s,INF); if (we>=k){printf("%d",tim); return 0;} } printf("0");}
0 0
- 【codevs1034】星际转移问题(家园)(网络流)
- codevs1034(网络流)
- nefu483星际转移问题(分层图网络流)
- 【网络流】星际转移问题
- 家园 codevs1034 ctsc1999 最大流
- 【网络流24题】星际转移问题
- [网络流24题]星际转移问题
- [网络流 24 题] 星际转移问题
- 网络流二十四题之十 —— 星际转移问题(HOME)
- 十三、星际转移问题 [分层图网络流问题]
- 十三、星际转移问题 [分层图网络流问题]
- 星际转移问题[网络流24题之13]
- 线性规划与网络流24——星际转移问题
- 网络流24题13. 星际转移问题
- loj6015「网络流 24 题」星际转移(枚举+分层图最大流)
- 星际转移问题
- 星际转移问题
- 星际家园
- python3使用pillow库为图片添加滤镜
- 机器学习 Python 库 Top 20
- driver: Linux设备模型之input子系统详解
- Caffe示例程序测试mnist数据集
- MySQL优化细节分析
- 【codevs1034】星际转移问题(家园)(网络流)
- IntelliJ IDEA和JBOSS配置及部署
- Interesting Calculator (最短路,广搜+优先队列,dp)(简单题)
- FileInputStream
- GPU共享内存问题
- CGAL 学习之—Triangulation_2
- Oracle和MySQL分页查询SQL语句
- 如何合理设置线程池大小
- 集合类1-list