栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2022.03.19京东算法第二题建造规划

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2022.03.19京东算法第二题建造规划

严正声明:转载请注明出处!!! 建造规划

题目描述:

小明在玩一款建造类的游戏。他需要为一段未开荒的地段设计路段的规划,以便起重机通过。

游戏里每段路径都有能承重的级别,小明现在希望尽可能让能承受更大的起重机通过,这样他就可以比较快地完成建造了。

游戏规定小明只能选一种起重机机型,小明想知道这个起重机最高的承重级别应该是多少,使得在该承重条件下,起重机可以从任何一个点出发去向任何一个点而不会损坏道路(损坏道路指的是路段上行驶了超过承重能力的起重机)。

为了方便,我们将需要规划的建造点抽象成N个点,有M条边将他们相连。

输入描述:

第一行是两个空格隔开的正整数n, m。n代表点数,我们将点从1到n编号,m指边的数量

接下来m行,每行3个空格隔开的正整数u, v, p,代表节点u和节点v之间有一条承重能力为p的路径

1≤n≤1000, 1≤m≤min{n*(n + 1)/2,10000}

输出描述:

一行,一个正整数,表示起重机的最重承重级别

输入样例:

3 3
1 2 3
1 3 4
2 3 5

样例输出:

4

提示:

样例解释

重量为5时,从点1到点3无法完成(超出了最大承重),而重量为4时可以任意两点间到达。因此最重可以是4.
import java.util.HashSet;
import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int[][] path = new int[m][3];
        int weight = 0;
        for(int i = 0;i < m;i++){
            for(int j = 0;j < 3;j++){
                path[i][j] = sc.nextInt();
                if(j == 2){
                    // 找出最大的weight值4
                    weight = Math.max(weight, path[i][j]);
                }
            }
        }
        HashSet set = new HashSet<>();
        // 最大的weight值递减,直到找到满足条件的
        
        while (weight >= 0){
            int edge = 0;
            for(int i = 0;i < m;i++){
                if(path[i][2] >= weight){
                    set.add(path[i][0]);
                    set.add(path[i][1]);
                    edge++;
                }
            }
            // 当满足条件的时候是edge >= n - 1并且set.size() == n
            if(edge >= n - 1 && set.size() == n){
                break;
            }
            weight--;
        }
        System.out.println(weight);
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/775052.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号