首页 > 其他分享 >2642. 设计可以求最短路径的图类(中等)

2642. 设计可以求最短路径的图类(中等)

时间:2024-04-01 18:46:06浏览次数:15  
标签:nxt 图类 cost int 2642 路径 edge new dis

核心思想
Dijkstra + 堆优化
模板题,每次查询做一次最短路查询即可。

class Graph {

    private List<int[]>[] nxt;

    public Graph(int n, int[][] edges) {
        nxt = new List[n];
        for(int i = 0; i < n; i++){
            nxt[i] = new ArrayList<>();
        }
        for(int[] edge: edges){
            int x = edge[0];
            int y = edge[1];
            int cost = edge[2];
            nxt[x].add(new int[]{y,cost});
        }
    }
    public void addEdge(int[] edge) {
        int x = edge[0];
        int y = edge[1];
        int cost = edge[2];
        nxt[x].add(new int[]{y,cost});
    }
    public int shortestPath(int node1, int node2) {
        int[] dis = new int[nxt.length];
        // o1 距离 o2 点
        PriorityQueue<int[]> pq = new PriorityQueue<int[]>((o1, o2) -> o1[0] - o2[0]);
        Arrays.fill(dis, Integer.MAX_VALUE);
        dis[node1] = 0;
        pq.add(new int[]{0, node1});
        while(!pq.isEmpty()){
            int[] edge = pq.poll();
            int x = edge[1];
            if(x == node2)
                return dis[x];
            for(int[] edgeTo: nxt[x]){
                int y = edgeTo[0];
                int cost = edgeTo[1];
                if(dis[y] > dis[x] + cost){
                    dis[y] = dis[x] + cost;
                    pq.add(new int[]{dis[y], y});
                }
            }
        }
        return -1;
    }
}

标签:nxt,图类,cost,int,2642,路径,edge,new,dis
From: https://www.cnblogs.com/ganyq/p/18109146

相关文章

  • 引入了 Shiro 的项目请求路径中带有中文报错400 的问题
    byemanjusakafromhttps://www.emanjusaka.top/2024/04/shiro-request-chinese-error-400彼岸花开可奈何本文欢迎分享与聚合,全文转载请留下原文地址。当我们的项目中引入了Shiro后,带有中文的请求路径会被拦截并返回400的错误。一般我们的请求路径是不会带有中文字符,但......
  • macbook pip3路径报错
    执行pip3,提示:zsh:/usr/local/bin/pip3:badinterpreter:/Library/Developer/CommandLineTools/usr/bin/python3:nosuchfileordirectory问题:原因:python路径不正确方法:➜whichpython3/usr/local/bin/python➜bincd/usr/local/bin➜binvimpip3修改第一......
  • 【二叉树】Leetcode 437. 路径总和 III【中等】
    路径总和III给定一个二叉树的根节点root,和一个整数targetSum,求该二叉树里节点值之和等于targetSum的路径的数目。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。示例1:**输入:**root=[10,5,-3,3,2,null,11,3,......
  • 2673. 使二叉树所有路径值相等的最小代价
    思路先看3节点的子树,想要路径值相同,只能修改叶子节点的值,如上图只能2去+1操作。核心思想:那么对于任意左右孩子节点,想要从根节点下来的路径相同,只能修改孩子节点。所以我们只需要从下至上记录叶子节点到当前节点的路径值,然后计算当前节点和右节点的差值。详细看灵神树上贪心......
  • 如何查看已安装的python路径?
    在Windows、Linux或Mac中,Python都是非常流行的编程语言。查看已安装的Python路径是学习Python开发的基础之一。下面我们就来分享一下如何查看已安装的Python路径?如何查看已安装的python路径?1.在Windows中首先,打开Windows命令提示符。在开始菜单中输入“cmd”并打开它。然后输入......
  • react路径别名@配置
    首先下载包craconpmi-D @craco/craco1.路径解析在项目根目录下创建craco.config.js配置如下2.vscode识别配置在项目根目录下创建jsconfig.json,配置如下3. package.json将start和build的内容改成craco,重启项目 ......
  • windows cmd中查看某个命令所在的路径
    需求描述:之前用linux环境下的which命令就能看到某个命令的绝对路径,然后想在windows下的cmd中是否也能够查看到命令的绝对路径呢操作过程:1.windows环境下,通过where命令也能看到命令所在的位置。检查一下环境变量,发现PATH路径当中确实有nvidia-smi的所在路......
  • DIjkstra进阶模板 路径记录 按权重(结点数最小等)记录
    structDIJ{usingi64=longlong;usingPII=pair<i64,i64>;vector<i64>dis,path,node;vector<vector<array<int,3>>>G;intn;DIJ(){}DIJ(intn):n(n){node.resize(n+1,1);......
  • Bat中cd到中文路径报错以及windows上设置快捷方式延迟启动执行
    场景要实现在windows启动目录下,执行bat脚本文件。脚本文件中需要进入某个中文目录所以直接cd/dD:\test\中文路径starttest.bat此时会提示: 此时需要指定bat的编码方式,修改bat脚本文件,添加如下chcp65001cd/dD:\test\中文路径starttest.bat则中文路径不再报错。......
  • java数据结构与算法刷题-----LeetCode1091. 二进制矩阵中的最短路径
    java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846文章目录广度优先+双分裂蛇广度优先+双分裂蛇双分裂蛇:是求二维表中从起点到终点的经典思路(也是......