Heavy Transportation

POJ-1797

  • 这题是最短路题型的变形,该题不是求起点到终点的最短路,而是求路径中的最小边的最大值。
  • 这题的求解思路是:将原来dijkstra中的松弛方程改一下,改成求最小边的最大值的松弛方程:d[j]=max(d[j],min(d[i],w[i][j]))。
#include <algorithm>
#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstring>
#define INF 0x3f3f3f3f
#define MOD 1e9+7
using namespace std;
int e[1005][1005];
int dis[1005];
bool vis[1005];
int main()
{
int T,n,m,ca=0;
cin>>T;
while(T--)
{
scanf("%d%d",&n,&m);
memset(e,0,sizeof(e));
int a,b,w;
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&a,&b,&w);
e[a][b]=e[b][a]=w;
}
dis[1]=INF;
for(int i=2;i<=n;i++)
dis[i]=e[1][i];
memset(vis,false,sizeof(vis));
for(int k=0;k<n;k++)
{
int mi,mm=-INF;
for(int i=1;i<=n;i++)
{
if(!vis[i]&&dis[i]>mm)
{
mm=dis[i];
mi=i;
}
}
vis[mi]=true;
for(int i=1;i<=n;i++)
{
if(!vis[i])
dis[i]=max(dis[i],min(dis[mi],e[mi][i]));
}
}
printf("Scenario #%d:\n%d\n\n",++ca,dis[n]);
}
return 0;
}

java:

package POJ;
import java.util.*;
public class POJ_1797 {
private static int n,m;//n:1-1000
static int t;//case
static int [][]w;
static int []dis;
static boolean []flag;
static final int INF=0X3F3F3F3F;
static int s,e;
static int dijkstra() {
for(int i=0;i<n;i++) {
int index=-1,mins=INF;
for(int j=0;j<n;j++) {
if(!flag[j]&&dis[j]>mins) {
mins=dis[index=j];
}
}
if(index==-1)
break;
flag[index]=true;
for(int j=0;j<n;j++) {
if(!flag[j])
dis[j]=Math.max(dis[j],Math.min(dis[index],w[index][j]));
}
}
return dis[e];
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner cin=new Scanner(System.in);
t=cin.nextInt();
int cnt=1;
while(t>0) {
n=cin.nextInt();
m=cin.nextInt();
w=new int[n][n];
dis=new int[n];
for(int i=0;i<m;i++) {
int from,to;
from=cin.nextInt();
to=cin.nextInt();
w[from-1][to-1]=w[to-1][from-1]=cin.nextInt();
}
s=0;e=n-1;
dis[s]=INF;
flag=new boolean[n];
for(int i=1;i<n;i++) {
dis[i]=w[0][i];
}
flag[s]=true;
System.out.println("Scenario #"+cnt+":");
System.out.println(dijkstra());
t--;
cnt++;
}
} }

最新文章

  1. SQL Server中的锁的简单学习
  2. codeforces 476B.Dreamoon and WiFi 解题报告
  3. MVC4.0 解决Controllers与Areas中控制器不能同名问题
  4. 初解DLL基本知识
  5. css 兼容 position:fixed
  6. 伪元素”:after” , “:before&quot;
  7. 于Unity3D调用安卓AlertDialog
  8. goroutine和线程区别
  9. RHEL 6.6下Python 2.6.6升级到Python 3.6.6
  10. vue - 列表显示(列互相影响,全选控制,更新数据)
  11. C#-变量类型(值类型、引用类型)
  12. 浅谈 equals 和 == 的区别
  13. Github上关于iOS的各种开源项目集合2(强烈建议大家收藏,查看,总有一款你需要)
  14. 面试:C++二叉树遍历(递归/非递归)
  15. JavaScript判断值是否是NaN
  16. Javascript 匿名函数与闭包
  17. MAMP和WAMP搭建Web环境,数据库,数据分布可视化
  18. Mybatis学习(2)原始dao开发和使用mapper接口代理开发
  19. 对于equals和==的理解
  20. Scrum Meeting 8 -2014.11.14

热门文章

  1. hdu1011 Starship Troopers
  2. 网易云音乐JS逆向解析歌曲链接
  3. C#线程Thread类
  4. Mac下anaconda的安装和基本使用
  5. [Golang]-2 Map关联数组与下划线(_)的意义
  6. woj1010 alternate sum 数学 woj1011 Finding Teamates 数学
  7. 【非原创】codeforces - 1067A Array Without Local Maximums【dp】
  8. HDU - 4725 The Shortest Path in Nya Graph 【拆点 + dijkstra】
  9. codeforces 01B
  10. vue &amp; this.$copyText