POJ 1797 Heavy Transportation(Dijkstra)
http://poj.org/problem?id=1797
题意 :给出N个城市M条边,每条边都有容量值,求一条运输路线使城市1到N的运输量最大。
思路 :用dijkstra对松弛条件进行变形。解释一下样例吧:从1运到3有两种方案
方案1:1-2-3,其中1-2承重为3,2-3承重为5,则可以运送货物的最大重量是3(当大于3时明显1到不了2)
方案2:1-3,可知1-3承重为4,故此路可运送货物的最大重量是4,故答案输出4
#include <iostream>
#include <stdio.h>
#include <string.h> using namespace std; int a[][],n,m,dp[] ;
bool map[] ;
void dijk(int t)
{
memset(map,,sizeof(map[])*(n+)) ;
for(int i = ; i <= n ; i++)
{
dp[i] = a[t][i] ;
}
dp[t] = ;
map[t] = true ;
for(int i = ; i < n ; i++)
{
int k = t ,temp = ;
for(int j = ; j <= n ; j++)
{
if(map[j]) continue ;
if(temp <= dp[j])
{
temp = dp[k = j] ;
}
} map[k] = true ;
if(map[n]) return ;
for(int j = ; j <= n ; j++)
{
if(map[j])
continue ;
dp[j] = max(dp[j],min(dp[k],a[k][j])) ;
}
}
}
int main()
{
int T ,c = ;
scanf("%d",&T) ;
while(T--)
{
scanf("%d %d",&n,&m) ;
for(int i = ; i <= n ; i++)
{
memset(a[i],,sizeof(a[i][])*(n+)) ;
}
for(int i = ; i < m ; i++)
{
int u,v,w ;
scanf("%d %d %d",&u,&v,&w) ;
a[u][v] = a[v][u] = max(a[u][v],w) ;
}
dijk() ;
printf("Scenario #%d:\n",c++) ;
printf("%d\n\n",dp[n]) ;
}
return ;
}
POJ 1797 Heavy Transportation(Dijkstra)的更多相关文章
- POJ 1797 Heavy Transportation (Dijkstra变形)
F - Heavy Transportation Time Limit:3000MS Memory Limit:30000KB 64bit IO Format:%I64d & ...
- POJ 1797 Heavy Transportation (dijkstra 最小边最大)
Heavy Transportation 题目链接: http://acm.hust.edu.cn/vjudge/contest/66569#problem/A Description Backgro ...
- POJ 1797 Heavy Transportation(Dijkstra变形——最长路径最小权值)
题目链接: http://poj.org/problem?id=1797 Background Hugo Heavy is happy. After the breakdown of the Carg ...
- POJ 1797 Heavy Transportation(Dijkstra运用)
Description Background Hugo Heavy is happy. After the breakdown of the Cargolifter project he can no ...
- poj 1797 Heavy Transportation(最大生成树)
poj 1797 Heavy Transportation Description Background Hugo Heavy is happy. After the breakdown of the ...
- POJ 1797 Heavy Transportation(最大生成树/最短路变形)
传送门 Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 31882 Accept ...
- poj 1797 Heavy Transportation(最短路径Dijkdtra)
Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 26968 Accepted: ...
- POJ 1979 Heavy Transportation (kruskal)
Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K Total Submissions:46898 Accepted: 1 ...
- POJ 1797 Heavy Transportation(最短路&Dijkstra变体)题解
题意:给你所有道路的载重,找出从1走到n的所有路径中载重最大的,即路径最小值的最大值. 思路:和之前的POJ3268很像.我们用Dijkstra,在每次查找时,我们把最大的先拿出来,因为最大的不影响最 ...
随机推荐
- update更新多行数据(oracle)
转自:http://blog.itpub.net/25322446/viewspace-767505 说明:笔记总结了在工作中遇到过的几种update方法和各种方法适用的范围. 1.单表更新方案:使用 ...
- CSS 元素垂直居中的 6种方法
利用CSS进行元素的水平居中,比较简单,行级元素设置其父元素的text-align center,块级元素设置其本身的left 和 right margins为auto即可.本文收集了六种利用css进 ...
- 【转】简单理解socket
题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公司使用的一些控件的开发,浏览器兼容性搞死人:但主要是因为这段时间一直在看html5的东西,看到web socket时觉得很有 ...
- OCI-DML-更新数据库中不存在的字段
用gtest来测试oracle中oci方式的SQL语句操作,在测试update数据库中不存在的异常案例的时候,日志没有报错,但是结束后跳出了数据库连接 gtest也没有给出正常的结果,本身update ...
- [DevExpress]ChartControl之饼状图百分比示例
关键代码: using System; using System.Data; using System.Windows.Forms; using DevExpress.XtraCharts; name ...
- JavaScript null and undefined
http://stackoverflow.com/questions/6429225/javascript-null-or-undefined var x; x == null // true x = ...
- mysql中的if条件语句用法
· IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; ...
- DB2 SQL 递归实现多行合并
最终效果 原始数据: 转换脚本: WITH post_a AS ( SELECT DISTINCT T.EMP_NO,S.CODE_ FROM inscndb.DTFMA000_EMP_POST T ...
- 【转】perl中尖括号运算符(<>)使用说明
perl中尖括号运算符的用途分享,这里简单介绍下,方便需要的朋友 perl中<>运算符可以有如下的用途: 1)如果尖括号中间是文件句柄,尖括号运算符允许你读取文件句柄,比如<STDI ...
- oracle游标小试
有时候需要大面积的修改数据,这个时候用循环语句效率不高.而临时表又不能满足点对点修改的时候,游标似一种不错的选择(PS:好像游标也是为循环而生的吧) 现在有两张表 t1(ryid number,nam ...