题意:
思路: 莫名其妙TLE啊woc我A了一坨题的网络流模板有问题 !!!!
在常数上会慢 (一个等于号 啊啊啊) 改了所有网络流有关的文章… 。。。。//By SiriusRen#include#include #include using namespace std;#define N 90000int n,m,t,xx[N],yy[N],zz[N],l=0x3fffffff,r,Mid,ans;struct Dinic{ int first[205],next[N],w[N],v[N],q[N],tot,vis[205],head,tail; void init(){memset(first,-1,sizeof(first)),tot=0;} void add(int x,int y,int z){ w[tot]=z,v[tot]=y,next[tot]=first[x],first[x]=tot++; w[tot]=0,v[tot]=x,next[tot]=first[y],first[y]=tot++; } bool tell(){ memset(vis,-1,sizeof(vis)); tail=q[0]=1,vis[1]=head=0; while(head r;i=next[i]) if(w[i]&&vis[v[i]]==vis[x]+1){ int t=zeng(v[i],min(y-r,w[i])); w[i]-=t,w[i^1]+=t,r+=t; } vis[x]=-1; return r; } int flow(){ int temp=0,jy; while(tell())while(jy=zeng(1,0x3fffffff))temp+=jy; return temp; } bool check(int x){ init(); for(int i=1;i<=m;i++) if(zz[i]<=x)add(xx[i],yy[i],1),add(yy[i],xx[i],1); return flow()>=t; }}dinic;int main(){ scanf("%d%d%d",&n,&m,&t); for(int i=1;i<=m;i++) scanf("%d%d%d",&xx[i],&yy[i],&zz[i]),l=min(l,zz[i]),r=max(r,zz[i]); while(l<=r){ Mid=(l+r)>>1; if(dinic.check(Mid))r=Mid-1,ans=Mid; else l=Mid+1; } printf("%d\n",ans);}