首页 > 其他分享 >AcWing 1128. 信使 (dij板子题 + 求花费最大的那个点的花费

AcWing 1128. 信使 (dij板子题 + 求花费最大的那个点的花费

时间:2023-11-26 14:45:07浏览次数:33  
标签:1128 PII ver dij 花费 int static new dis

package 算法提高课;

import java.util.Arrays;
import java.util.PriorityQueue;
import java.util.Scanner;

public class acw1128 {
    static int n, m;
    static int[] h, e, w, ne;
    static int[] d;
    static boolean[] st;
    static int idx;
    static class PII implements Comparable {
        int ver, dis;

        public PII(int ver, int dis) {
            this.ver = ver;
            this.dis = dis;
        }

        @Override
        public int compareTo(Object o) {
            PII te = (PII) o;
            return this.dis - te.dis;
        }
    }
    private static void init() {
        h = new int[n + 10]; e = new int[2 * m + 10]; w = new int[2 * m + 10]; ne = new int[2 * m + 10];
        d = new int[n + 10]; st = new boolean[n + 10];
        Arrays.fill(h, -1);
    }

    private static int dij() {
        PriorityQueue<PII> pq = new PriorityQueue<>();
        int ans = -1, cnt = 0;
        Arrays.fill(d, 0x3f3f3f3f);
        d[1] = 0;
        pq.add(new PII(1, 0));

        while (!pq.isEmpty()) {
            PII te = pq.poll();
            int ver = te.ver, dis = te.dis;

            if (st[ver]) continue;
            st[ver] = true;
            cnt ++ ;

            ans = Math.max(dis, ans);

            for (int i = h[ver]; i != -1; i = ne[i]) {
                int j = e[i];
                if (d[j] > dis + w[i]) {
                    d[j] = dis + w[i];
                    pq.add(new PII(j, d[j]));
                }
            }
        }

        if (cnt != n) return -1;
        return ans;
    }

    private static void add(int a, int b, int c) {
        e[idx] = b; w[idx] = c; ne[idx] = h[a]; h[a] = idx ++ ;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        n = sc.nextInt(); m = sc.nextInt();
        init();

        for (int i = 1; i <= m; i ++ ) {
            int a = sc.nextInt(), b = sc.nextInt(), c = sc.nextInt();
            add(a, b, c);
            add(b, a, c);
        }

        System.out.println(dij());
    }
}

标签:1128,PII,ver,dij,花费,int,static,new,dis
From: https://www.cnblogs.com/llihaotian666/p/17857187.html

相关文章

  • 20211128《信息安全系统设计与实现》第十三章学习笔记
    一、任务内容自学教材第13章,提交学习笔记(10分)1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”核心是要求GPT:“请你以苏格......
  • Dijkstra 算法python版
    算法策略Dijkstra算法是求一个图中一个点到其他所有点的最短路径的算法,先了解图的数据结构「邻接矩阵」Dijkstra算法是一个基于「贪心」、「广度优先搜索」、「动态规划」求一个图中一个点到其他所有点的最短路径的算法,时间复杂度O(n2)B站视频:https://www.bilibili.com/vide......
  • dijkstra跑全源最短路
     跑n次voiddijk(){ for(inti=1;i<=n;i++) for(intj=1;j<=n;j++)d[i][j]=inf; priority_queue<pii,vector<pii>,greater<pii>>q; for(intS=1;S<=n;S++){ q.push(pii(0,S)); for(inti=1;i<=n;i++)......
  • 20211128《信息安全系统设计与实现》第12章学习笔记
    一、任务内容自学教材第12章,提交学习笔记(10分)1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”核心是要求GPT:“请你以苏格......
  • 代码训练营第三十八天(Python)| 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
    509.斐波那契数1、动态规划classSolution:deffib(self,n:int)->int:ifn<=1:returnn#dp[i]代表第i个数的斐波那契值dp=[0]*(n+1)dp[0]=0dp[1]=1foriinrange(2,n+1):......
  • Dijkstra算法
    Dijkstra算法1.算法基本介绍Dijkstra算法是一个基于「贪心」、「广度优先搜索」、「动态规划」求一个图中一个点到其他所有点的最短路径的算法,时间复杂度O(n2)。Dijkstra算法通常是求解单源最短路中最快的算法,但它无法处理存在负权边的情况(原因在正确性证明中)。Dijkstra本质......
  • UVA11282 题解
    题意简述Kelly寄出去\(n\)封邀请函,但她希望只有小于等于\(m\)个人收到他们自己的邀请函(即有至少\(n-m\)个人收到了别人的邀请函)。思路形成容易发现,这道题是一个典型的错排题,我们只需要分别求出\(n-m\)个元素到\(n\)个元素的错排即可。接下来为错排的推导,我们令\(f......
  • 20211128《信息安全系统设计与实现》第六章学习笔记
    一、任务内容自学教材第6章,提交学习笔记(10分)1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”核心是要求GPT:“请你以苏格拉......
  • Dijkstra, RIP, OSPF:OSPF算法
    RoutingInformationProtocol(RIP):Adistancevectorprotocolthatuseshopcountasitsmetrictodeterminethebestpathforroutingpackets.OpenShortestPathFirst(OSPF):Alinkstateprotocolthatcalculatesroutesbasedontheshortestpathalgor......
  • Dijkstra, RIP, OSPF:RIP算法
    这部分参考王道bilibili视频:https://www.bilibili.com/video/BV19E411D78Q?p=56&vd_source=63764dd9776224d187bddddb05bf9f3f 例题-1:R6、R4相邻,如左图所示。现在R4的路由表更新为右上表,现在让你写出R6更新后的路由表。  例题-2:这道题中向量6个元素分别代表某个路......