最短路+二分。

对容量进行二分,因为容量和时间是单调关系的,容量越多,能用的边越少,时间会不变或者增加。

因为直接暴力一个一个容量去算会TLE,所以采用二分。

#include<cstdio>
#include<vector>
#include<cstring>
#include<queue>
#include<map>
#include<algorithm>
using namespace std; const int maxn = ;
const int INF = 0x7FFFFFFF;
struct aaa { int u, v, cc, tt; }node[];
vector<aaa>ljb[maxn];
int c[], dist[maxn], flag[maxn];
int n, m, t; void spfa(int xianzhi)
{
int iii;
queue<int>Q;
memset(flag, , sizeof(flag));
for (iii = ; iii<=n; iii++) dist[iii] = INF;
dist[] = ; Q.push(); flag[] = ;
while (!Q.empty())
{
int h = Q.front(); Q.pop(); flag[h] = ;
for (iii = ; iii<ljb[h].size(); iii++)
{
aaa u = ljb[h][iii];
if (u.cc >= xianzhi)
{
if (u.u == h)
{
if (dist[u.u] + u.tt <= dist[u.v])
{
dist[u.v] = dist[u.u] + u.tt;
if (flag[u.v] == )
{
Q.push(u.v);
flag[u.v] = ;
}
}
}
else if (u.v == h)
{
if (dist[u.v] + u.tt <= dist[u.u])
{
dist[u.u] = dist[u.v] + u.tt;
if (flag[u.u] == )
{
Q.push(u.u);
flag[u.u] = ;
}
}
}
}
}
}
} int main()
{
int X;
scanf("%d", &X);
while (X--)
{
int i, j, u, v, tt;
scanf("%d%d%d", &n, &m, &t);
for (i = ; i <= n; i++) ljb[i].clear();
for (i = ; i <= m; i++) node[i].tt = INF;
for (i = ; i < m; i++)
{
scanf("%d%d%d%d", &u, &v, &c[i], &tt);
node[i].u = u; node[i].v = v;
node[i].cc = c[i]; node[i].tt = tt;
ljb[v].push_back(node[i]); ljb[u].push_back(node[i]);
}
sort(c, c + m);
int anss = -, xx, dd, zz;
xx = ; dd = m - ; zz = (xx + dd) / ;
while ()
{
spfa(c[zz]);
if (dist[n] <= t) { anss = zz; xx = zz + ; zz = (xx + dd) / ; }
else { dd = zz; zz = (xx + dd) / ; }
if (xx >= dd) break;
}
printf("%d\n", c[anss]);
}
return ;
}

hdu 1839 Delay Constrained Maximum Capacity Path的更多相关文章

  1. hdu 1839 Delay Constrained Maximum Capacity Path 二分/最短路

    Delay Constrained Maximum Capacity Path Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu. ...

  2. hdu 1839 Delay Constrained Maximum Capacity Path(spfa+二分)

    Delay Constrained Maximum Capacity Path Time Limit: 10000/10000 MS (Java/Others)    Memory Limit: 65 ...

  3. 【启发式搜索】Codechef March Cook-Off 2018. Maximum Tree Path

    有点像计蒜之道里的 京东的物流路径 题目描述 给定一棵 N 个节点的树,每个节点有一个正整数权值.记节点 i 的权值为 Ai.考虑节点 u 和 v 之间的一条简单路径,记 dist(u, v) 为其长 ...

  4. Codechef March Cook-Off 2018. Maximum Tree Path

    目录 题意 解析 AC_code @(Codechef March Cook-Off 2018. Maximum Tree Path) 题意 给你一颗\(n(1e5)\)个点有边权有点权的树,\(Mi ...

  5. HDU 1839

    http://acm.hdu.edu.cn/showproblem.php?pid=1839 题意:从1到n,要求时间小于等于T到达.每条边有一个容量,问最多能运多少货物. 分析:最多能运的货物取决于 ...

  6. UVA 10816 + HDU 1839 Dijstra + 二分 (待研究)

    UVA 题意:两个绿洲之间是沙漠,沙漠的温度不同,告诉起点,终点,求使得从起点到终点的最高温度最小的路径,如果有多条,输出长度最短的路径: 思路:用最小费用(最短路径)最大流(最小温度)也能搞吧,但因 ...

  7. hdu 4002 Find the maximum

    Find the maximum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) ...

  8. HDU 4002 Find the maximum(欧拉函数)

    题目链接 猜了一个结论,题面跟欧拉函数有关系. import java.util.*; import java.math.*; import java.text.*; import java.io.* ...

  9. HDU 5052 Yaoge’s maximum profit 光秃秃的树链拆分 2014 ACM/ICPC Asia Regional Shanghai Online

    意甲冠军: 特定n小点的树权. 以下n每一行给出了正确的一点点来表达一个销售点每只鸡价格的格 以下n-1行给出了树的侧 以下Q操作 Q行 u, v, val 从u走v,程中能够买一个鸡腿,然后到后面卖 ...

随机推荐

  1. redhat7.3配置163 yum源

    redhat 的更新包只对注册的用户生效,所以我们需要自己手动更改成CentOS 的更新包,CentOS几乎和redhat是一样的,所以无需担心软件包是否可安装,安装之后是否有问题. 1.首先删除re ...

  2. 编写高性能SQL的注意事项

    在数据库部分,对数据库应用性能改进来说,需要重点关注应用程序,在查询设计和索引策略等方面进行优化,甚至可以把数据库查询效率提高数百倍,在其他方面的优化努力,其效果就没有这么明显(见下图).本文重点描述 ...

  3. html5 canvas的教程

    原文地址:http://www.cnblogs.com/tim-li/archive/2012/08/06/2580252.html 原作很强悍 导航 前言 基本知识 绘制矩形 清除矩形区域 圆弧 路 ...

  4. 黄聪:VPS服务器好备份工具配置

  5. ubuntu 16.04安装mips交叉编译

    1. 在 /etc/apt/sources.list 文件末尾添加下面的更新源: deb http://ftp.de.debian.org/debian squeeze main deb http:/ ...

  6. [ An Ac a Day ^_^ ] hdu 2830 矩阵交换II

    第一眼觉得是个dp 但是有了可以随意交换的条件觉得简单了不少 但是还是没做出来…… 看了一下别人的做法才觉得自愧不如 因为所有列都可以随意交换 应该尽量把长的放在一起 那么将所有的矩形排序之后 以第j ...

  7. 【python标准库】内建函数

    abs(x) 返回一个数的绝对值.参数可以是普通的整数,长整数或者浮点数.如果参数是个复数,返回它的模. all(iterable) 如果iterable的所有元素为真(或者iterable为空), ...

  8. auDemo

    Option Explicit Private Const MODULE_NAME = "auDemo.WSC" Dim oEccomOperation,dbDemo Set oE ...

  9. java中使用数组和链表简单实现SJBMap

    import java.util.LinkedList; public class SJBMap { private Object[] elementData; private int size; p ...

  10. PAT乙级1006. 换个格式输出整数 (15)

    让我们用字母B来表示“百”.字母S表示“十”,用“12...n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数.例如234应该被输出为BBSSS1234,因为它有2个“百”. ...