蒻蒻求教(超时了,算法复杂度问题还是细节)

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        int h = scanner.nextInt();
        List<List<int[]>> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            List<int[]> ele = new ArrayList<>();
            list.add(ele);
        }
        for (int i = 0; i < m; i++) {
            int u = scanner.nextInt();
            int v = scanner.nextInt();
            int w = scanner.nextInt();
            int d = scanner.nextInt();
            list.get(u - 1).add(new int[]{v,w,d});
            list.get(v - 1).add(new int[]{u,w,d});
        }
        Queue<Map<String,Integer>> queue = new LinkedList<>();
        Map<String,Integer> map = new HashMap<>();
        map.put(1 + "",1);
        map.put("u",1);
        map.put("w",Integer.MAX_VALUE);
        map.put("d",0);
        queue.add(map);
        int max = -1;
        while (!queue.isEmpty()) {
            Map<String,Integer> head = queue.poll();
            if (head.get("u") == n) {
                if (head.get("w") > max) {
                    max = head.get("w");
                }
                continue;
            }
            Integer u = head.get("u");
            List<int[]> ele = list.get(u - 1);
            for (int i = 0; i < ele.size(); i++) {
                int[] next = ele.get(i);
                if (!head.containsKey(next[0]) && next[2] + head.get("d") <= h) {
                    Map<String,Integer> temp = new HashMap<>(head);
                    temp.put(next[0] + "",1);
                    temp.put("u",next[0]);
                    temp.put("w",Math.min(next[1],temp.get("w")));
                    temp.put("d",temp.get("d") + next[2]);
                    queue.add(temp);
                }
            }
        }
        System.out.println(max);
    }
}

#笔试##23届找工作求助阵地#
全部评论
dfs 求所有路径最小值的最大值吧
点赞 回复 分享
发布于 2023-05-05 08:14 湖南
二分加dijkstra
点赞 回复 分享
发布于 2023-05-04 21:35 江苏

相关推荐

05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务