首先注意边是双向边,最短路的inf要取很大

思路:增加一个源点,一个汇点,如果一个避雨点有a只奶牛,则从源点向这个点连一条边,容量为a,

如果这个避雨点能容纳b只奶牛,则从这个点向汇点连一条容量为b的边。

接着二分枚举答案,两点间最短路径的长度小于等于二分值的两个点能互相到达,连一条容量为无穷大的边

这样子建好图后求最大流会发现样例都过不了,debug过程中发现如果1->2 , 2->3,那么1就会自动联通3,实际上1,3可能不连通,所以想到把点拆成两排,如果1,2连通,就从1连一条边到2+n,这样就不会出现上面的情况了,另外,连接汇点的点变成了n+1---2*n。

敲完后果断还是WA,都快吐血了,算法应该没错,可能是大数据的问题,但应该用__int64的地方都用了啊,于是,恼火地将所有的数的数据类型都改成了__int64,果断AC,恶心shi了

相关文章:

  • 2021-08-20
  • 2021-08-02
  • 2021-08-30
  • 2021-08-18
  • 2022-12-23
  • 2021-06-29
  • 2021-06-23
  • 2022-12-23
猜你喜欢
  • 2021-05-31
  • 2022-12-23
  • 2022-12-23
  • 2021-08-24
  • 2022-12-23
  • 2021-09-22
  • 2021-08-29
相关资源
相似解决方案