题目描述
题目大意:有n个点m条边的图,每一条边一天只能通过一定数量的人,每个人一天只能走一条边,问T个人全部从1走到n所用的最短天数。
题解
首先二分答案k,然后判定k天能不能过去
每个点拆k+1个点,分别表示k+1个时刻,然后对于从第i个时刻到第i+1个时刻连边,连对应的m条边,然后对于每一个时刻的1号点和n号点s->1,n->t,然后判断最大流是否>=T就行了
但是我并没有写二分,而是枚举之后在残余网络上加边直接跑,效率更加优秀
代码
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
using namespace std;
#define N 10005
#define E 500005
#define inf 1000000000
int n,m,T,s,t,cnt,maxflow,ans;
int x[N],y[N],z[N];
int tot,point[N],nxt[E],v[E],remain[E];
int deep[N],cur[N],last[N],num[N];