POJ-1797(最短路变形-dijkstra)
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++;
		}
	}
}
												
											POJ-1797(最短路变形-dijkstra)的更多相关文章
- poj 1797 最短路变形dijkstra
		
题意:题目大意:有n个城市,m条道路,在每条道路上有一个承载量,现在要求从1到n城市最大承载量,而最大承载量就是从城市1到城市n所有通路上的最大承载量 链接:点我 解题思路:其实这个求最大边可以近似于 ...
 - Heavy Transportation POJ 1797 最短路变形
		
Heavy Transportation POJ 1797 最短路变形 题意 原题链接 题意大体就是说在一个地图上,有n个城市,编号从1 2 3 ... n,m条路,每条路都有相应的承重能力,然后让你 ...
 - poj 1797(最短路变形)
		
题目链接:http://poj.org/problem?id=1797 思路:题目意思很简单,n个顶点,m条路,每条路上都有最大载重限制,问1->n最大载重量.其实就是一最短路的变形,定义wei ...
 - POJ 1797 最短路变形所有路径最小边的最大值
		
题意:卡车从路上经过,给出顶点 n , 边数 m,然后是a点到b点的权值w(a到b路段的承重),求卡车最重的重量是多少可以从上面经过. 思路:求所有路径中的最小的边的最大值.可以用迪杰斯特拉算法,只需 ...
 - POJ 1797 	Heavy Transportation (Dijkstra变形)
		
F - Heavy Transportation Time Limit:3000MS Memory Limit:30000KB 64bit IO Format:%I64d & ...
 - 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)
		
http://poj.org/problem?id=1797 题意 :给出N个城市M条边,每条边都有容量值,求一条运输路线使城市1到N的运输量最大. 思路 :用dijkstra对松弛条件进行变形.解释 ...
 - POJ 1797 Heavy Transportation (dijkstra 最小边最大)
		
Heavy Transportation 题目链接: http://acm.hust.edu.cn/vjudge/contest/66569#problem/A Description Backgro ...
 - poj 3013 最短路变形
		
http://poj.org/problem?id=3013 给出n个点,m个边.给出每个点的权值,每个边的权值.在m条边中选n-1条边使这n个点成为一棵树,root=1,求这棵树的最小费用,费用=树 ...
 
随机推荐
- Codeforces Round #643 (Div. 2) 题解 (ABCDE)
			
目录 A. Sequence with Digits B. Young Explorers C. Count Triangles D. Game With Array E. Restorer Dist ...
 - Codeforces Round #648 (Div. 2)  F. Swaps Again
			
题目链接:F.Swaps Again 题意: 有两个长度为n的数组a和数组b,可以选择k(1<=k<=n/2)交换某一个数组的前缀k和后缀k,可以交换任意次数,看最后是否能使两个数组相等 ...
 - 一文带你认识Docker
			
Docker是一个容器技术的应用,而底层是由于Linux容器实现的,Docker只是实现层. 一.Linux容器 1.隔离与共享 一台服务器运行着多个逻辑隔离的服务器进程,谁的运行环境都不希望影响到谁 ...
 - WPF 只读集合在 XAML 中的绑定(WPF:Binding for readonly collection in xaml)
			
问题背景 某一天,我想做一个签到打卡的日历.基于 Calendar,想实现这个目标,于是找到了它的 SelectedDates 属性,用于标记签到过的日期. 问题来了. 基于MVVM模式,想将其在xa ...
 - codeforces 1039B Subway Pursuit【二分+随机】
			
题目:戳这里 题意:一个点在[1,n]以内,我们可以进行4500次查询,每次查询之后,该点会向左或向右移动0~k步,请在4500次查询以内找到该点. 解题思路:一边二分,一边随机. 交互题似乎有好多是 ...
 - 2018牛客多校第一场 E-Removal【dp】
			
题目链接:戳这里 转自:戳这里 题意:长度为n的序列,删掉m个数字后有多少种不同的序列.n<=10^5,m<=10. 题解:dp[i][j]表示加入第i个数字后,总共删掉j个数字时,有多少 ...
 - Leetcode(886)-可能的二分法
			
给定一组 N 人(编号为 1, 2, ..., N), 我们想把每个人分进任意大小的两组. 每个人都可能不喜欢其他人,那么他们不应该属于同一组. 形式上,如果 dislikes[i] = [a, b] ...
 - BZOJ 3676 回文串(回文树)题解
			
题意: 一个回文的价值为长度 * 出现次数,问一个串中的子串的最大回文价值 思路: 回文树模板题,跑PAM,然后计算所有节点出现次数. 参考: 回文串问题的克星--Palindrome Tree(回文 ...
 - Linux 驱动框架---linux 设备
			
Linux 设备 Linux驱动中的三大主要基础成员主要是设备,总线和驱动.今天先来从设备开始分析先把设备相关的数据结构放到这里方便后面看到来查,其中有些进行了简单的注释. struct device ...
 - 经济学,金融学:资产证券化 ABS
			
经济学,金融学:资产证券化 ABS ABS 资产支持证券 蚂蚁金服如何把30亿变成3000亿?资产证券化 前几天,花呗借呗的东家蚂蚁集团在上市前夕被监管部门叫停,因为这则新闻广大网民都听说了一个概念: ...