POJ 1797 Heavy Transportation&&POJ 2253 Frogger 最短路 dijkstra变形

别人的解释感觉很赞


POJ 1797

题意:每条路都有一个重量限制

求从1--n的路径中可通过的最大的重量

思路:

因为是取最大值 所以图的初始化应为-1

d[u]中储存当前路径可以通行的最大质量

更新时比较 先取 路径与前点的最小值 再与当前点比较取最大值(即更新)

#include
#include
#include 
#include 
#include
#include
using namespace std;
#define N 1032
#define INF 1<<20
bool used[N];
int d[N],cost[N][N];
int max(int a,int b)
{return ab?b:a;}
void dijkstra(int s,int V){// 邻接矩阵表示  
    for(int i=0;i<=V;i++){//初始化  
        d[i]=cost[0][i];
        used[i]=false; 
    }  
    d[s]=0;  
    while(true){  
        int v=-1; 
		int u; 
		for( u=0;ud[v]))  
				v=u;  
		}  
		if(v==-1)  break;  //顶点全部使用过  
		used[v]=true;  
        for( u=0;u

POJ 2253 

与上题类似 求A蛙到B蛙的路径上 每条路径上的边有一个最大值,求这些最大值中的最小值

#include
#include
#include 
#include 
#include
#include
using namespace std;
#define N 1022
bool used[N];
double d[N],cost[N][N];
double max(double a,double b)
{return ab?b:a;}
void dijkstra(int s,int V){// 邻接矩阵表示  
    for(int i=0;i<=V;i++){//初始化  
        d[i]=111111110;  
        used[i]=false; 
    }  
    d[s]=0;  
    while(true){  
        int v=-1; 
		int u; 
		// 在未使用过的顶点中选择一个距离最小的顶点  
		for( u=0;u


转载于:https://www.cnblogs.com/kewowlo/p/4002590.html

你可能感兴趣的:(POJ 1797 Heavy Transportation&&POJ 2253 Frogger 最短路 dijkstra变形)