题意:





思路:

先Floyd一遍两两点之间的最短路 二分答案

建图

跑Dinic

只要不像我一样作死#define int long long 估计都没啥事……

我T到死辣……..

最后才改过来……

(不过注意一哈 答案 &最短路确实是会爆int的)

//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 667
int f,m,xx,yy,cow[222],cap[222],zz,all;
long long map[222][222],maxx;
struct Dinic{
int first[N],next[N*1000],v[N*1000],tot,vis[N],w[N*1000],q[N*1000],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(){
head=0,tail=1;
memset(vis,-1,sizeof(vis));
vis[0]=0,q[0]=0;
while(head<tail){
int t=q[head++];
for(int i=first[t];~i;i=next[i])
if(vis[v[i]]==-1&&w[i])
vis[v[i]]=vis[t]+1,q[tail++]=v[i];
}
return vis[666]!=-1;
}
int flow(int x,int y){
if(x==666)return y;
int r=0;
for(int i=first[x];~i&&y>r;i=next[i])
if(w[i]&&vis[v[i]]==vis[x]+1){
int t=flow(v[i],min(y-r,w[i]));
w[i]-=t,w[i^1]+=t,r+=t;
}
if(!r)vis[x]=-1;
return r;
}
int work(){
int ans=0,jy;
while(tell())while(jy=flow(0,0x3fffffff))ans+=jy;
return ans;
}
bool check(long long x){
init();
for(int i=1;i<=f;i++)add(0,i,cow[i]),add(i+f,666,cap[i]);
for(int i=1;i<=f;i++)
for(int j=1;j<=f;j++)
if(map[i][j]<=x)
add(i,j+f,0x3fffffff);
return work()==all;
}
}dinic;
signed main(){
memset(map,0x3f,sizeof(map));
scanf("%d%d",&f,&m);
for(int i=1;i<=f;i++)map[i][i]=0;
for(int i=1;i<=f;i++)scanf("%d%d",&cow[i],&cap[i]),all+=cow[i];
for(int i=1;i<=m;i++){
scanf("%d%d%d",&xx,&yy,&zz);
map[xx][yy]=min(map[xx][yy],(long long)zz),map[yy][xx]=map[xx][yy];
}
for(int k=1;k<=f;k++)
for(int i=1;i<=f;i++)
for(int j=1;j<=f;j++){
map[i][j]=min(map[i][j],map[i][k]+map[k][j]);
if(map[i][j]<=1000000000LL*200)maxx=max(maxx,map[i][j]);
}
long long l=0,r=maxx,ans=-1;
while(l<=r){
long long Mid=(l+r)/2;
if(dinic.check(Mid))r=Mid-1,ans=Mid;
else l=Mid+1;
}
printf("%lld\n",ans);
}

最新文章

  1. Hibernate SQL实际sql语句监控- p6spy+hibernate+proxool 设置
  2. Oracle PL/SQL设置快捷键的方法
  3. 删除桌面IE图标
  4. maven-bundle-plugin 2.4.0以下版本导出META-INF中的内容到MANIFEST.MF中
  5. SQLServer2008 绑定默认值
  6. 建立docker私有hub
  7. 利用python 获取 windows 组策略
  8. loadrunner 发送gzip压缩json格式(转)
  9. GUI编程笔记(java)02:java.awt和java.swing包的区别
  10. make clean与make distclean的区别
  11. 安装dotnet core
  12. AngularJS的工作原理1
  13. UNIX环境高级编程——环境变量表读取/添加/修改/删除
  14. zookeeper 应用开发
  15. log4net 2.0.8 不支持core 数据库记录日志
  16. Spring mvc接收中文参数值乱码(tomcat配置问题)
  17. RHEL7 DNS 服务 unbound 测试
  18. 《数字图像处理原理与实践(MATLAB版)》一书之代码Part5
  19. java-信息安全(三)-PBE加密算法
  20. Java之Junit和反射

热门文章

  1. 使用Chrome浏览器,让我们远离(所有)广告
  2. Bootstrap modal.js 源码分析
  3. mybatis-generator-core快速生成实体类和Mapper
  4. 【Loadrunner】Vugen录制脚本为空的解决办法
  5. CSU 1446 Modified LCS 扩展欧几里得
  6. ECNUOJ 2573 Hub Connection plan
  7. ArcGIS api for javascript——图形-使用多个图形图层
  8. ArcGIS api for javascript——图层-创建定制的切片图层类型的图层
  9. [Python] Normalize the data with Pandas
  10. C#读写共享目录