首页 > 其他分享 >单源最短路径问题

单源最短路径问题

时间:2023-10-09 12:13:24浏览次数:33  
标签:map deque int 路径 单源 问题 nextInt static new

单源最短路径问题

无向图【可以转化为BFS扩散问题】

首先先构造邻接表
特殊情况如下:

# 由于是无向图:我们最后要从 2 出发开始扩散
如果不考虑2次的话,就得不到下面的邻接表了,因为是无向图,那么 5 2 也是 2 5,所以我们利用 hashSet来进行操作
5 5
2 1
2 3
2 4
5 2
5 3
2

import java.util.Scanner;
import java.util.*;


// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
   static Map<Integer, Set<Integer>> map = new HashMap<>();   //  邻接表
    static Deque<Integer> deque = new ArrayDeque<>();
    static boolean[] isVisited;
    static int res = 0;

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int count = in.nextInt();   //  点个数
        isVisited = new boolean[count + 1];
        int row = in.nextInt();
        for (int i = 0; i < row; i++) {
            int a = in.nextInt();
            int b = in.nextInt();
            Set<Integer> orDefault1 = map.getOrDefault(a, new HashSet<>());
            orDefault1.add(b);
            Set<Integer> orDefault2 = map.getOrDefault(b, new HashSet<>());
            orDefault2.add(a);
            map.put(a, orDefault1);
            map.put(b, orDefault2);
        }
        int start = in.nextInt();
        deque.offer(start); //  将 2 压入队列
        isVisited[start] = true;
        bfs();
        System.out.println((res - 1) * 2);  //  经过多少天可以辐射全部!!!【减去初始的那天!!!】
    }
  public static void bfs(){
        while (!deque.isEmpty()){
            int len = deque.size();
            while (len > 0){
                Integer peek = deque.pop();
                if (map.containsKey(peek)){
                    Set<Integer> set = map.get(peek);
                    for (Integer integer : set) {
                        if (!isVisited[integer]){
                            deque.offer(integer);
                            isVisited[integer] = true;
                        }
                    }
                }
                len--;
            }
            res++;
        }
    }
}

有向图【Dijistra】

标签:map,deque,int,路径,单源,问题,nextInt,static,new
From: https://www.cnblogs.com/aclq/p/17751410.html

相关文章

  • ${pageContext.request.contextPath}不能识别的问题
    ${pageContext.request.contextPath}是通过 get方法去取的,先pageContext.getRequest()得到HttpServletRequest对象,再调用 HttpServletRequest的getContextPath方法作用是取出部署的应用程序名,这样不管如何部署,所用路径都是正确的。 El表达式的写法:${pageContext.request.......
  • 前端判断视频格式(H264、H265,解决谷歌chrome浏览器无法播放mp4问题)
    chrome浏览器对某些mp4文件不支持,播放时只有声音没有画面。这种情况一般是因为视频文件为H265编码,而chrome浏览器只支持H264编码的文件(谷歌没买H265的使用专利)。 解决方法一:使用软件(格式工厂或命令行库ffmpeg)对文件进行转换,将H265转换成H264。格式工厂: ffmpeg:ffmpeg-i......
  • DevOps|研发效能解决的是企业效率问题
    研发效能并不能解决企业效益问题它不是利润中心,不能给你带来直接收入(研发效能相关工具厂商做咨询、出方案、卖工具除外)。想要解决企业效益问题,依赖于企业战略、业务/产品、组织、运营、创新等其他方面。研发效能解决的是企业效率问题研发效能解决的是企业内部「产研运协作效率......
  • 三维模型3DTile格式轻量化的跨平台兼容性问题分析
    三维模型3DTile格式轻量化的跨平台兼容性问题分析 三维模型3DTile格式是一种开放的、高效的和互操作的空间信息数据格式。然而,它作为一种新兴的技术,其在轻量化与跨平台兼容性方面存在着一些问题。首先,由于3DTile格式主要针对大型三维场景进行设计,其文件数量巨大,数据密度高,导......
  • vue项目使用lodash节流防抖函数问题与解决
    背景在lodash函数工具库中,防抖_.debounce和节流_.throttle函数在一些频繁触发的事件中比较常用。防抖函数_.debounce(func,[wait=0],[options=])创建一个debounced(防抖动)函数,该函数会从上一次被调用后,延迟 wait 毫秒后调用 func 方法。参数func (Function):要防抖......
  • 哈夫曼编码效率问题
    例题给出问题解决......
  • 多线程,线程同步(synchronized),并发问题
    多个线程同时操作一个对象,就会出现并发问题,所以需要线程同步,线程同步是一种等待机制。 线程同步的形成条件:队列+锁(锁就是例如上厕所,一个进去锁住避免其他进入。到下一个进去再锁住)线程同步来解决线程的不安全性弊端!: ......
  • 训练Loss阶梯式下降问题
    问题训练某个数据集时发现,Loss会在摸某一个Epoch之后再次出现一个断崖式下降,而不是正常的圆滑下降。如图: 解决在模型设计上加入残差模块解决。  ......
  • 【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A+建材识别装置+CUG汪汪小分队+问题记
    【玄铁杯第三届RISC-V应用创新大赛】LicheePi4A+建材识别装置+CUG汪汪小分队+opencv问题记录一、开发板环境搭建1.1开发板外观图1开发板带铝合金外壳外部图图2开发板带铝合金外壳内部图在yolox模型部署好后,在虚拟环境中调用opencv的imshow等图形化操作会报下面错误:1.2......
  • 惠普打印机提示卡纸,实际无卡纸,无法打印的一种解决办法,不花钱解决问题,我的最爱
    hp打印机提示卡纸,但打开看又没有卡纸。合上盖子反复尝试,发现是无法吸上去纸,和这一步相关的就是下图所示的搓纸轮。拆下来后,发现上面的软硅胶的纹路已经完全磨光了,中间有一条已经磨得明显凹陷了。买个新的要几天时间,发现可以将外面灰色的那个硅胶套抠下来,旋转180度然后再套上,再将......