【图论】想越狱的小衫

news/2024/12/22 8:51:43/

题目描述

这次小杉来到了经典美剧《越狱》的场景里……他被抓起来了(-.-干嘛幻想这么郁闷的场景……)。

小杉身为新一代的Scofield,在挖了半个月之后终于挖通牢房里的地道。

在地道里,无数的管道路线困惑了他。

小杉看了看自己的纹身,明白了整个管道网是由N个小房间和若干小房间之间的单向的管道组成的。

小房间编号为不超过N的正整数。

对于某个管道,小杉只能在人品不超过一定程度时通过。

小杉一开始在房间1,现在小杉想知道,每个小房间他最多能够以人品多少的状态到达。

注意,小杉的人品在出发以后是不会改变的。

输入

每组测试数据的第一行有一个正整数N(1<=N<=2000)。

接下来若干行描述管道,每行三个正整数A,B,R(1<=A,B<=N),表示A房间有一条到达B房间的管道,且小杉的人品不超过R时可以通过(注意从B房间不可由此管道到达A房间,即管道是单向的)
整个输入数据以一行0 0 0结束

特别地,对于30%的数据,有N<=100,对于100%的数据,有N<=2000.

输出

    对每组测试数据输出N-1行,分别表示对于2到N号的小房间,小杉最多能够以人品多少的状态到达(到达不了为0)。

样例输入

4
1 2 30
1 3 20
2 3 25
3 4 30
2 4 20
0 0 0

样例输出

30
25
25

提示

来源

#include<bits/stdc++.h>
using namespace std;
struct edge{int v,w;bool operator<(edge a)const{return w<a.w;}
}now,temp;
int dis[10005],n,m;
bool vis[10005];
vector<edge>a[10005];
void dijkstra(){memset(dis,0,sizeof(dis));memset(vis,0,sizeof(vis));dis[1]=0x3f3f3f3f;priority_queue<edge>q;q.push({1,dis[1]});while(!q.empty()){now=q.top();q.pop();if(vis[now.v]) continue;vis[now.v]=1;int len=a[now.v].size();for(int i=0;i<len;i++){temp=a[now.v][i];if(min(dis[now.v],temp.w)>dis[temp.v]){dis[temp.v]=min(dis[now.v],temp.w);q.push({temp.v,dis[temp.v]});}}}}
int main(){cin>>n;int u,v,w;while(1){cin>>u>>v>>w;if(u==0&&w==0&&v==0) break;a[u].push_back({v,w});}dijkstra();for(int i=2;i<=n;i++){cout<<dis[i]<<endl;}return 0;}

图论-最短路


http://www.ppmy.cn/news/75266.html

相关文章

游戏洞察丨自来水还是井水,后流量时代的私域挑战

流量生意本质上是买卖用户浏览时间的生意&#xff0c;如果用户增长到顶&#xff0c;那就意味着供给到顶。对比 2021 年&#xff0c;2022 年的游戏出海在谷歌和 Facebook 上投入的广告成本几乎翻了一倍。新晋“渠道王者”TikTok 逐渐走进大家的视野。该现象背后的原因在于&#…

MySQL数据库最常见的6种故障的排除方法

MySQL数据库最常见的6中故障的排除方法 1.MySQL无法启动 2.MySQL连接不上 3.MySQL打开文件失败 4.MySQL挂起&#xff08;hung&#xff09; 5.MySQL崩溃&#xff08;crash&#xff09; 6.忘记用户密码 1.MySQL无法启动 1.无法访问系统资源 2.参数设置错误 无法访问系统…

ffmpeg命令行工具源码之结构体分析1-命令行参数(未完结,持续更新)

前言 ffmpeg作为多媒体文件转换工具&#xff0c;至少需要有一个要转换的输入文件信息&#xff08;不仅仅是普通文件&#xff0c;还可以是摄像头设备&#xff0c;网络流等&#xff09;&#xff0c;和通常至少需要一个输出格式的文件&#xff08;输出文件不仅仅指普通的文件&…

【SQL】MySQL的数据类型

MySQL的数据类型 MySQL是一种广泛使用的关系型数据库管理系统&#xff0c;它支持各种数据类型&#xff0c;包括数字、字符串、日期和时间等。在MySQL中&#xff0c;数据类型是用来定义表中列的类型&#xff0c;它决定了表中的数据如何被存储和操作。 数字类型 MySQL支持多种…

完犊子!原单位的离职证明丢了,下周要入职了,用AI做一个行不行?

弄丢了离职证明怎么办&#xff1f; 一位网友哀叹&#xff1a; 完犊子&#xff01;原单位的离职证明丢了&#xff0c;下周要入职了&#xff0c;现在怎么办&#xff1f;用AI做一个行不行&#xff1f; 有相同经历的网友安慰他&#xff0c;离职证明没了没事&#xff0c;新公司会要求…

格式化数据写入sprintf的用法

sprintf 是一个常见的 C 语言函数&#xff0c;用于将格式化的数据写入字符串缓冲区中。它的原型如下&#xff1a; int sprintf(char *str, const char *format, …); sprintf 函数将按照指定的格式 format 将数据写入字符串 str 中&#xff0c;并返回写入的字符数&#xff08;不…

linux动态库版本控制

文章目录 1. 动态库相关概念2. ldd 查看依赖项3. 动态链接器 ld.so的加载路径4. 动态版本库版本控制5. ldconfig自动更新soname到linkname6. 可执行程序的执行过程 linux 动态库版本控制 1. 动态库相关概念 Soname、linkname和realname都是在Linux系统下与共享库&#xff08;s…

firewalld防火墙

文章目录 firewalld概述firewalld 与 iptables 的区别firewalld 区域的概念firewalld防火墙预定义了9个区域 firewalld数据处理流程firewalld检查数据包的源地址的规则 firewalld防火墙的配置方法常用的firewall-cmd 命令选项区域管理服务管理端口管理设置地址转换 firewalld概…