Heavy Transportation POJ 1797 最短路变形
Heavy Transportation POJ 1797 最短路变形
题意
题意大体就是说在一个地图上,有n个城市,编号从1 2 3 ... n,m条路,每条路都有相应的承重能力,然后让你求从编号为1的城市到编号为n的城市的路线中,最大能经过多重的车。
解题思路
这个题可以使用最短路的思路,不过转移方程变了\(dis[j]=max(dis[j], min(dis[u], e[u][j]))\)。这里dis[j]表示从标号为1的点到达编号为j的点的路径中,最小的承重能力,就像短板效应样,一个木桶所能容纳的水是由最短的木板决定的。
代码实现
//使用优先队列优化的Dijkstra算法
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
const int maxn=1e3+7;
const int inf=0x3f3f3f3f;
struct edge{
int to, cost;
};
struct node{
int d, u;
friend bool operator<(const node a, const node b){
return a.d < b.d;
}
};
int dis[maxn];
bool vis[maxn];
vector<edge> g[maxn];
priority_queue<node> que;
int t, n, m;
void init()
{
for(int i=1; i<=n; i++){
g[i].clear();
vis[i]=0;
dis[i]=-inf;
}
while(!que.empty()) que.pop();
}
void dij(int s)
{
int u, num=0;
edge e;
dis[s]=inf;
node tmp={inf, s}, next;
que.push(tmp);
while(!que.empty() && num<=n)
{
tmp=que.top();
que.pop();
u=tmp.u;
if(vis[u]) continue;
vis[u]=1;
num++;
for(int i=0; i<g[u].size(); i++)
{
e=g[u][i];
if(!vis[e.to] && dis[e.to] < min(dis[u], e.cost) )
{
dis[e.to]=min(dis[u], e.cost);
next.d=dis[e.to];
next.u=e.to;
que.push(next);
}
}
}
}
int main()
{
int cnt=1;
scanf("%d",&t);
while(t--)
{
int u, v;
edge e;
scanf("%d%d", &n, &m);
init();
for(int i=0; i<m; i++)
{
scanf("%d%d%d", &u, &v, &e.cost);
e.to=v;
g[u].push_back(e);
e.to=u;
g[v].push_back(e);
}
dij(1);
printf("Scenario #%d:\n", cnt++);
printf("%d\n\n", dis[n]);
}
return 0;
}
Heavy Transportation POJ 1797 最短路变形的更多相关文章
- poj 1797(最短路变形)
题目链接:http://poj.org/problem?id=1797 思路:题目意思很简单,n个顶点,m条路,每条路上都有最大载重限制,问1->n最大载重量.其实就是一最短路的变形,定义wei ...
- Heavy Transportation POJ - 1797
题意 给你n个点,1为起点,n为终点,要求所有1到n所有路径中每条路径上最小值的最最值. 思路 不想打最短路 跑一边最大生成树,再扫一遍1到n的路径,取最小值即可,类似Frogger POJ - 22 ...
- poj1797 - Heavy Transportation(最大边,最短路变形spfa)
题目大意: 给你以T, 代表T组测试数据,一个n代表有n个点, 一个m代表有m条边, 每条边有三个参数,a,b,c表示从a到b的这条路上最大的承受重量是c, 让你找出一条线路,要求出在这条线路上的最小 ...
- poj 1797 最短路变形dijkstra
题意:题目大意:有n个城市,m条道路,在每条道路上有一个承载量,现在要求从1到n城市最大承载量,而最大承载量就是从城市1到城市n所有通路上的最大承载量 链接:点我 解题思路:其实这个求最大边可以近似于 ...
- kuangbin专题专题四 Heavy Transportation POJ - 1797
题目链接:https://vjudge.net/problem/POJ-1797 思路:请参考我列出的另一个题目,和这个题目要求的值相反,另一个清楚后,这个写的解释就明白了. 另一个类似题目的博客:h ...
- POJ 1797 最短路变形所有路径最小边的最大值
题意:卡车从路上经过,给出顶点 n , 边数 m,然后是a点到b点的权值w(a到b路段的承重),求卡车最重的重量是多少可以从上面经过. 思路:求所有路径中的最小的边的最大值.可以用迪杰斯特拉算法,只需 ...
- POJ - 1797 Heavy Transportation 单源最短路
思路:d(i)表示到达节点i的最大能运输的重量,转移方程d(i) = min(d(u), limit(u, i));注意优先队列应该以重量降序排序来重载小于符号. AC代码 #include < ...
- poj 3013 最短路变形
http://poj.org/problem?id=3013 给出n个点,m个边.给出每个点的权值,每个边的权值.在m条边中选n-1条边使这n个点成为一棵树,root=1,求这棵树的最小费用,费用=树 ...
- POJ 3013最短路变形....
DES:计算输的最小费用.如果不能构成树.输出-1.每条边的费用=所有的子节点权值*这条边的权值.计算第二组样例可以知道树的费用是所有的节点的权值*到根节点的最短路径的长度. 用dij的邻接矩阵形式直 ...
随机推荐
- 常用C库函数小结
1. sprintf 原型:int sprintf( char *buffer, const char *format, [ argument] - ); 功能:将格式化后的字符串写在buffer中, ...
- ValseWebninar 报告汇总
ValseWebninar为计算机视觉.图像处理.模式识别与机器学习等研究领域内的华人青年学者提供深入学术交流的舞台. 20191218:基于视觉和常识的深度推理 主持人: 主讲人: 2019 ...
- P1914 小书童——密码
输入格式: 第一行:n.第二行:未移动前的一串字母 输出格式: 一行,是此蒟蒻的密码 直接上代码: #include<iostream> using namespace std; int ...
- javaScript用正则来获取url传递的参数
用window.location.href获取url再js正则来获得需要的参数: 这个正则有多种写法,这里我选择这样写,要查找的属性名我直接以参数的形式传进去,用正则查找,以"?&# ...
- Partial Dependence Plot
Partial Dependence就是用来解释某个特征和目标值y的关系的,一般是通过画出Partial Dependence Plot(PDP)来体现. PDP是依赖于模型本身的,所以我们需要先训练 ...
- Java 注解方式校验请求参数
1. 参数校验常用注解 注解 验证的数据类型 备注 Null 任意类型 参数值必须是 Null NotNull ...
- legend3---lavarel安装debugbar工具条
legend3---lavarel安装debugbar工具条 一.总结 一句话总结: ` lavarel插件一般是composer官网下载,然后config/app.php中声明和加别名 ` 直接照官 ...
- PL/SQL中文乱码问题
本人的使用情况是: 笨既没有安装Oracle,配置了PLSQL,在查询含有中文数据的时候遇到了查询的数据中有中文乱码的问题,中文显示为???,并且软件的某些提示也会出现. 先进行查询确认编码: ...
- JSP——JavaServer Page中的隐式对象(implicit object)、指令(directive)、脚本元素(scripting element)、动作(action)、EL表达式
目录 1.JSP概述 2.注释(comment) 2.1.JSP注释 2.2.HTML注释 3.隐式对象(implicit object) 3.1.隐式对象清单 3.2.request对象 3.3.o ...
- ccf 201703-4 地铁修建(95)(并查集)
ccf 201703-4 地铁修建(95) 使用并查集,将路径按照耗时升序排列,依次加入路径,直到1和n连通,这时加入的最后一条路径,就是所需要修建的时间最长的路径. #include<iost ...