首页 > 其他分享 >POJ 1797 Heavy Transportation(迪杰斯特拉最短路变形)

POJ 1797 Heavy Transportation(迪杰斯特拉最短路变形)

时间:2023-05-26 15:04:09浏览次数:80  
标签:Heavy Transportation int site2 路径 迪杰 mp include 1010


传送门

题意分析:Hugo想要扩展他的公司,他有起重机要到目的地,到达目的地有很多条路径,但是,每一条路都有相应承重量,现在需要找出到达目的地的最大承重道路的承重质量。

解题分析:首先,每一条路径的承重量取决于承重量最小的那条道路(短板效应),所以就是找所有路径的最小值,然后选择最小值最大的路径,输出其最小值,这是最短路的变种,需要运用松弛操作,遍历所有路径,记录每条路径的最小值,同时选择同目的地路径最大值。

代码如下

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
int mp[1010][1010];
const int maxn = 0x3f3f3f3f;
int main()
{
    int a,t = 0;
    scanf("%d",&a);
    while(a--)
    {
        int b,c,site1,site2,dis,d[1010],v[1010];
        scanf("%d %d",&b,&c);
        memset(v,0,sizeof(v));
        for(int i = 0;i < 1001; i++)
        {
            for(int j = 0;j < 1001; j++)
            {
                mp[i][j] = 0;
            }
        }
        for(int i = 0;i < c; i++)
        {
            scanf("%d %d %d",&site1,&site2,&dis);
            mp[site1][site2] = mp[site2][site1] = dis;
        }
        for(int i = 1;i <= b; i++)
            d[i] = mp[1][i];
        for(int i = 0;i < c; i++)
        {
            int m = 0,x = 0;
            for(int j = 1;j <= b; j++)
            {
                if(m <= d[j] && !v[j])
                {
                    x = j;
                    m = d[j];
                }
            }
            v[x] = 1;
            for(int j = 1;j <= b; j++)
                d[j] = max(d[j],min(d[x],mp[x][j]));
        }
        printf("Scenario #%d:\n%d\n\n",++t,d[b]);
    }
    return 0;
}

 

标签:Heavy,Transportation,int,site2,路径,迪杰,mp,include,1010
From: https://blog.51cto.com/u_16131191/6356117

相关文章

  • abc270_f Transportation 题解
    Transportation题意有\(n\)个城市,你可以执行以下操作若干次:选择一个没有建机场的城市\(i\),花费\(x_i\)建一个机场。选择一个没有建港口的城市\(i\),花费\(y_i\)建一个港口。还有\(m\)条没有修建的道路,第\(i\)条道路双向连接\(a_i\)和\(b_i\),修建这条道路需要......
  • 迪杰斯特拉算法
    输入可能是边以及权值,将其保存在邻接表之后转为使用邻接矩阵来进行存储。然后需要一个数组来存放从起点到所有点的距离的数组dist,需要一个visited数组来表示是否以访问。算法流程:首先初始化起点到各点的初始距离选择其中最短的一个距离对应的顶点,并且要求该点未被访问......
  • 基础绘图(有向、无向、权重、迪杰斯特拉)
    在线绘图网站:GraphEditor(csacademy.com)1.基础绘图1.1无权重图graph(s,t)可以在s和t中的对应节点之间创建边并生成图s和t必须具有相同的元素数注意:编号从1开始,且是连续的编号s1=[1,2,3,4];t1=[2,3,1,1];G1=graph(s1,t1);plot(G1)%通过下面这句可以不显式坐标......
  • 迪杰斯特拉算法(Dijkstra算法)
    洛谷P1821[USACO07FEB]CowPartyShttps://www.luogu.com.cn/problem/P1821一、递归/*B1631[Usaco2007Feb]CowParty====关键词================================......
  • ARC111C Too Heavy 题解
    无解的情况:当且仅当一个人手上的物品不是自己的物品,并且这个物品的质量大于自己的体重,这个不是自己的东西就卡手了,换不出去,无解。甲手上是乙的物品。乙的手上是丙的物品,丙......
  • 从 s 点到 t 点的最短路(简单模板)(迪杰斯特拉)
    迪杰斯特拉简单版#include<bits/stdc++.h>usingnamespacestd;intm,n;constintinf=0x3f3f3f3f;intdis[1005];intgra[405][405];intvis[1005];voidd......
  • Newest JPRO Professional Heavy Truck Diagnostic Scanner Tool
    JPROisthe#1in-shopdiagnosticandrepairsolutionusedbytoday’smajorfleetsandservicecenters.Offeringthemostextensivemulti-brandcoverageandc......
  • 数据结构与算法-求最短路径之迪杰斯特拉(Dijkstra)算法
    迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径,它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。1.......
  • 使用栅格地图复现迪杰斯特拉算法
    Dijkstra算法可以计算出在有权图中从某个起点出发到其他任何一点的最短路径长度算法思想:迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最......
  • C语言最短路径[迪杰斯特拉算法][2023-01-16]
    C语言最短路径[迪杰斯特拉算法][2023-01-16]算法与数据结构课程设计要求一、 题目:最短路径二、课程设计报告要求1、设计目的(1)要求熟练掌握C语言的基本知识和编程技......