代码随想录打卡|Day50 图论(拓扑排序精讲 、dijkstra(朴素版)精讲 )

article/2025/8/21 10:25:29

图论part08

拓扑排序精讲

代码随想录讲解链接
题目链接

在这里插入图片描述

思路

  • 在这个题目之中,个别文件的处理依赖于别的文件,因此,文件的处理顺序十分重要。
  • 我们用图来表示文件的处理顺序,文件s指向文件t,则说明如果要正确的处理文件t,那么就必须先处理文件s。换句话说,文件t所对应的入度为1,当我们处理好文件s之后,文件t的入度就变成0,于是就可以处理文件t了。
  • 同理,当我们将文件t处理之后,文件t指向的下一个文件x也就可以正常处理了(x入度为0),以此类推,最终根据结果集之中的文件个数可以正确的判断是否能够成功处理。
import java.util.*;public class Main{public static void main(String[] args){Scanner sc = new Scanner(System.in);int N = sc.nextInt();int M = sc.nextInt();// 构建图从而记录文件之间的依赖关系List<List<Integer>> umap = new ArrayList<>();// 记录每个文件的入度int[] inDegree = new int[N];for(int i = 0 ; i < N ; i++)umap.add(new ArrayList<>());// 填充边的关系for(int i = 0 ; i < M ; i++){int s = sc.nextInt();int t = sc.nextInt();umap.get(s).add(t); //表示s指向tinDegree[t] ++; //由于s指向t,所以t的入度加一}Queue<Integer> queue = new LinkedList<>();// 找出所有节点之中入度为0的节点for(int i = 0 ; i < N ; i++){if(inDegree[i] == 0){queue.add(i);}}List<Integer> result = new ArrayList<>();// 拓扑排序流程while(!queue.isEmpty()){int cur = queue.poll();result.add(cur);// 上面将节点cur加入到结果集之后,cur指向的所有节点的入度都应该减1for(int nextNode : umap.get(cur)){inDegree[nextNode] --;// 当某个节点的入度为0的时候,将其添加到队列之中if(inDegree[nextNode] == 0){queue.add(nextNode);}}}// 在这里如果结果集之中的记录个数等于文件个数,则证明这些文件可以正常处理。// 若果结果集之中的记录个数小于文件个数,这证明这些文件的依赖一定存在环。if(result.size() == N){for(int i = 0 ; i < N - 1 ; i++){System.out.print(result.get(i)+" ");}System.out.print(result.get(N - 1 ));}else{System.out.println(-1);}}
}

dijkstra(朴素版)精讲

代码随想录链接
题目链接
在这里插入图片描述
在这里插入图片描述

import java.util.*;public class Main{public static void main(String[] args){Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int[][] graph = new int[n+1][n+1];for(int i = 0 ; i <= n ; i++)Arrays.fill(graph[i],Integer.MAX_VALUE);for(int i = 0 ; i < m ; i++){int s = sc.nextInt();int t = sc.nextInt();int val = sc.nextInt();graph[s][t] = val;}int start = 1;int end = n;// 存储原点到每个节点的最短距离int[] minDis = new int[n + 1];Arrays.fill(minDis,Integer.MAX_VALUE);// 判断当前的节点是否已经被访问过boolean[] visted = new boolean[n+1];// 原点到自身的距离为0minDis[start] = 0;for(int i = 1 ; i <= n ; i++){// 初始化用于记录的最小值和当前节点int minVal = Integer.MAX_VALUE;int cur = 1;// 寻找val最小的边for(int v = 1 ; v <= n ; v++){if(!visted[v] && minDis[v] < minVal){cur = v;minVal = minDis[v];}}visted[cur] = true;// 更新minDis数组for(int v = 1 ; v <= n ; v++ ){if(!visted[v] && graph[cur][v] != Integer.MAX_VALUE && minDis[cur] + graph[cur][v] < minDis[v] ){minDis[v] = minDis[cur] + graph[cur][v];}}}if (minDis[end] == Integer.MAX_VALUE) {System.out.println(-1); // 不能到达终点} else {System.out.println(minDis[end]); // 到达终点最短路径}}
}

http://www.hkcw.cn/article/mGnQkwgZmO.shtml

相关文章

朱啸虎:曾三次错失宁德时代!

朱啸虎:曾三次错失宁德时代。近日,在腾讯视频《激流第二季》中,投资人朱啸虎谈及自己三次错失宁德时代,投资电池失败损失7000万美金的经历。他表示早期看了宁德时代三次,认为他们的技术不性感,不是最新一代,因而投了掌握美国最新一代技术的波士顿电池。结果最新的技术不…

女子观赏“蓝眼泪”失踪多方搜救 游客夜观奇景失联

5月26日傍晚,浙江台州温岭市松门镇海边的大坑沙村,23岁游客孙女士在徒步时失踪。警方和救援人员在山上和海里搜寻多日,但截至29日上午仍未找到她。孙女士生于2002年,平时与父亲一起在宁波生活。5月26日,她告诉父亲自己出去玩,当晚不回家,随后乘列车前往温岭市。当天下午…

PS linux 基础篇1-AXI_DMA

系列文章目录 文章目录 系列文章目录前言一、AXI DMA ip核二、BD工程三、PS linux工程1.使用开源的xilinx_axidma-master工程验证驱动2.按照其他的开源进行就行&#xff0c;没什么写的了 前言 PL与PS之间快速的接口&#xff0c;本文为LOOP回环测试 一、AXI DMA ip核 MM2S mem…

儿子打死父亲后母亲欲顶罪母子被判 家庭悲剧引发深思

49岁的宋甲长期酗酒,酒后经常殴打、辱骂妻儿。2024年7月5日,宋甲喝了一斤多白酒后回家辱骂儿子宋乙,妻子李某上前劝阻却被殴打。看到母亲被家暴,儿子打了父亲一拳,父子发生争吵打斗,最终儿子将父亲打死。案发后,母子共同清理现场,并焚烧了作案工具。李某为了保护儿子,…

前端-关于apk文件分片上传

为什么需要分片上传&#xff1f; 一次性处理的致命缺陷&#xff1a; 内存溢出&#xff1a;大文件完全加载到内存 界面冻结&#xff1a;读取过程阻塞主线程 上传失败&#xff1a;单次请求可能超时或被服务器拒绝 需求&#xff1a;一个弹出框&#xff0c;将apk文件上传&#x…

病理切片TLS比例作为免疫治疗响应和预后的预测因子

定义 三级淋巴结构 &#xff08;TLS&#xff0c;Tumor Lymphoid Structure&#xff09;&#xff1a;是指在非淋巴组织中的慢性炎症部位&#xff08;包括癌症&#xff09;形成的异位淋巴细胞聚集体。 目前&#xff0c;分割和量化 TLS 的金标准是基于对 T&#xff08;CD3: 用于…

Linux浅谈

Linux浅谈 一、什么是 Linux&#xff1f;先抛开 “内核”&#xff0c;看整体 可以把 Linux 系统 想象成一台 “组装电脑”&#xff1a; 最核心的零件是 “主板”—— 这就是 Linux 内核&#xff08;Kernel&#xff09;&#xff0c;负责管理电脑里的所有硬件&#xff08;比如 …

【模板-指南】

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

ICASSP2025丨融合语音停顿信息与语言模型的阿尔兹海默病检测

阿尔兹海默病&#xff08;Alzheimers Disease, AD&#xff09;是一种以认知能力下降和记忆丧失为特征的渐进性神经退行性疾病&#xff0c;及早发现对于其干预和治疗至关重要。近期&#xff0c;清华大学语音与音频技术实验室&#xff08;SATLab&#xff09;提出了一种将停顿信息…

吴艳妮获亚锦赛季军 妈妈:希望她恢复最佳状态 带伤参赛展现坚韧

因当地暴雨天气,原本计划于5月29日下午5时进行的亚洲田径锦标赛女子100米栏决赛延迟至当晚9时开赛。中国选手吴艳妮以13秒068的成绩获得季军。5月28日上午,吴艳妮以13秒07的成绩晋级决赛。赛后,她的母亲熊艳表示,比赛结果并不重要,只希望她尽快恢复,以最佳状态迎接未来的…

AMBA-AHB仲裁机制

前文 仲裁机制保证了任意时刻只有一个 master 可以接入总线。Arbiter 决定了哪个向其发出接入请求的 master 可以接入总线&#xff0c;这通过优先级算法实现。AHB规范并没有给出优先级算法&#xff0c;需要设计者根据具体的系统要求定义。一般情况下 arbiter 不会中断一…

长期口臭可能是你的身体在求救 三步教你自救

有些人表面光鲜亮丽一张嘴却让人“退避三舍”尤其在晨起、空腹时口臭问题更明显不仅尴尬还可能暗藏健康隐患科学应对口臭还你清新口气!先对号入座你的口臭是临时客串还是疾病信号?1、生理性口臭:临时“小插曲”饮食作祟:大蒜、洋葱、韭菜等含硫化合物的食物,会通过血液循环…

辰亦儒老婆曾之乔回应二胎计划 随缘就好

5月29日,女演员曾之乔出席活动时分享了她的产后生活,表示生完宝宝后感到非常幸福,并透露怀孕期间给儿子取的小名叫“甜蜜”。她还提到与丈夫辰亦儒采取“责任制”方式照顾宝宝,两人会排班负责。对于是否计划要二胎,她表示一切随缘。曾之乔和辰亦儒在2009年合作《爱似百汇》…

kafka学习笔记(三、消费者Consumer使用教程——从指定位置消费)

1.简介 Kafka的poll()方法消费无法精准的掌握其消费的起始位置&#xff0c;auto.offset.reset参数也只能在比较粗粒度的指定消费方式。更细粒度的消费方式kafka提供了seek()方法可以指定位移消费允许消费者从特定位置&#xff08;如固定偏移量、时间戳或分区首尾&#xff09;开…

旅客私自携带230万美元现金入境 折合人民币超1600万元

近日,皇岗海关在福田口岸旅检渠道查获一名旅客违规携带未申报的230万美元现金入境,折合人民币超过1600万元。皇岗海关关员在福田口岸旅检进境大厅对旅客及行李物品进行监管时,发现一名经“无申报通道”通关的旅客携带的行李机检图像异常。随后,该旅客被引导至查验区进一步检…

精度更高、速度更快!从RT-DETR到RF-DETR全面突破实时检测瓶颈

【导读】 YOLO虽快&#xff0c;但其依赖的非最大抑制&#xff08;NMS&#xff09;后处理拖累速度与精度。DETR架构首次实现无需NMS的“一对一”预测&#xff0c;却受限于计算成本。如今&#xff0c;RT-DETR 通过混合编码器、不确定性查询选择等创新突破实时瓶颈&#xff1b;RF…

提升搜索效率:深入了解Amazon Kendra的强大功能

从智能文档搜索到精准的自然语言处理&#xff0c;Amazon Kendra为企业提供了一个强大的解决方案&#xff0c;帮助我们突破传统搜索引擎的局限&#xff0c;快速实现信息的高效整合与检索&#xff0c;接下来让我们一起探索Amazon Kendra如何成为工作中的得力助手&#xff0c;提升…

社群营销:信任比流量值钱

你肯定见过那种群里天天甩链接的&#xff0c;动不动就所有人&#xff0c;点进去全是促销信息——这种玩意儿不叫社群营销&#xff0c;顶多是广告轰炸。 搞社群得先把自己当人&#xff0c;也把别人当人。别整那些机器人自动回复&#xff0c;谁半夜两点发消息都秒回&#xff0c;…

嵌入式工作项目中的线程管理(监控线程和重启线程的具体实现)

嵌入式工作项目中的线程管理(监控线程和重启线程的具体实现) 1. 背景 环境:ARMv7,Linux; 软件所处位置:应用层; 问题出现概率:偶先,概率极小; 问题描述: 一个负责校时的进程,里面有一个是网络校时的线程和一个 GPS 校时的线程,还有处理其他一些业务的线程;出现…

【图像处理基石】立体匹配的经典算法有哪些?

1. 立体匹配的经典算法有哪些&#xff1f; 立体匹配是计算机视觉中从双目图像中获取深度信息的关键技术&#xff0c;其经典算法按技术路线可分为以下几类&#xff0c;每类包含若干代表性方法&#xff1a; 1.1 基于区域的匹配算法&#xff08;Local Methods&#xff09; 通过…