题目链接:https://vijos.org/p/1391

背景

这次小杉来到了经典美剧《越狱》的场景里……
他被抓起来了(-.-干嘛幻想这么郁闷的场景……)。
小杉身为新一代的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

输出格式

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

样例输入

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

样例输出

30
25
25

限制

每个测试点1s

提示

对于样例数据:
小杉最多能够在人品为30的情况下到达小房间2(1->2)
小杉最多能够在人品为25的情况下到达小房间3(1->2->3)
小杉最多能够在人品为25的情况下到达小房间4(1->2->3->4)

解题思路

这道题考察的还是最短路问题,只不过求的是最大的,可以用迪杰斯特拉最短路径算法做,只不过要变一下条件。我们知道,求可以通过的最多人品,可以求从1号到n号可以通过的每个房间的最多人品,即求每条路线上子房间的最少人品数(类似于木桶原理),故一部分核心代码为:

for (k = 0; k < n; k++)
{
    if (map[data][k] < inf)
    {
        ans = min(dis[data], map[data][k]);
        if (!vis[k] && dis[k] < ans)
            dis[k] = ans;
    }
}

#include <stdio.h>
#define min(a, b) a < b ? a : b
const int inf = 99999999;
int t, map[2010][2010], vis[2010], dis[2010], n, m;
void Dijkstra() {int data = 0, max, ans, i, j, k;for (i = 0; i < n; i++) {dis[i] = map[0][i];vis[i] = 0;}vis[0] = 1;for (i = 0; i < n; i++) {max = -inf;for (j = 0; j < n; j++) {if (!vis[j] && dis[j] > max) {max = dis[j];data = j;}}vis[data] = 1;for (k = 0; k < n; k++) {if (map[data][k] < inf) {ans = min(dis[data], map[data][k]);if (!vis[k] && dis[k] < ans)dis[k] = ans;}}}
}
int main() {int t1, t2, t3;while (~scanf("%d", &n)) {for (int i = 0; i < n; i++)for (int j = 0; j < n; j++)map[i][j] = 0;while (scanf("%d%d%d", &t1, &t2, &t3), t1 + t2 + t3)map[t1 - 1][t2 - 1] = t3;Dijkstra();for (int i = 1; i < n; i++)printf("%d\n", dis[i]);}return 0;
}

Vijos - 想越狱的小杉(最短路)相关推荐

  1. Vijos 1391 想越狱的小杉

    Vijos 1391 想越狱的小杉 题目位置 https://vijos.org/p/1391 题目描述 小杉看了看自己的纹身,明白了整个管道网是由N个小房间和若干小房间之间的单向的管道组成的. 小房 ...

  2. Vijos P1391 想越狱的小杉

    Vijos P1391 想越狱的小杉 题目 背景 这次小杉来到了经典美剧<越狱>的场景里-- 他被抓起来了(-.-干嘛幻想这么郁闷的场景--). 小杉身为新一代的Scofield,在挖了半 ...

  3. 【图论-最短路变形】想越狱的小杉

    [图论-最短路变形]想越狱的小杉 Time Limit:1000MS  Memory Limit:65536K Description 背景 Background 这次小杉来到了经典美剧<越狱& ...

  4. [vijos P1391] 想越狱的小杉

    考前最后一题,竟然是第一次码SPFA,虽然这个算法早有耳闻,甚至在闻所未闻之前自己有过一个类似的想法,说白了就是广搜啊,但是敲起来还是第一次啊,而且这还不是真正意义上的SPFA. 完全按照自己想法来码 ...

  5. 【vijos】【图论】【最短路径】【SPFA】想越狱的小杉

          From lolanv 想越狱的小杉               背景 Background     这次小杉来到了经典美剧<越狱>的场景里--  他被抓起来了(-.-干嘛幻想 ...

  6. 【vijos】【spfa最短路】想越狱的小杉

    描述 小杉看了看自己的纹身,明白了整个管道网是由N个小房间和若干小房间之间的单向的管道组成的. 小房间编号为不超过N的正整数. 对于某个管道,小杉只能在人品不超过一定程度时通过. 小杉一开始在房间1, ...

  7. 8.17 想越狱的小杉 1535

    题目 题解 代码 题目 背景 Background 这次小杉来到了经典美剧<越狱>的场景里-- 他被抓起来了(-.-干嘛幻想这么郁闷的场景--). 小杉身为新一代的Scofield,在挖了 ...

  8. #104-[SPFA]想越狱的小杉

    Description 这次小杉来到了经典美剧<越狱>的场景里-- 他被抓起来了(-.-干嘛幻想这么郁闷的场景--). 小杉身为新一代的Scofield,在挖了半个月之后终于挖通牢房里的地 ...

  9. [spfa]SSL 1535 想越狱的小杉

    Description 小杉看了看自己的纹身,明白了整个管道网是由N个小房间和若干小房间之间的单向的管道组成的. 小房间编号为不超过N的正整数. 每个管道都有一个人品限制值,小杉只能在人品不超过该限制 ...

最新文章

  1. 我的Android进阶之旅------gt;Java全角半角的转换方法
  2. 平流式初沉池贮砂斗计算_给排水之市政污水处理构筑物:平流式、曝气式、旋流式三大沉砂池...
  3. Pandas: 如何将一列中的文本拆分为多行?
  4. SharePoint 2013 Error - TypeError: Unable to get property 'replace' of undefined or null reference
  5. Ajax中什么时候用同步,什么时候用异步?
  6. 判定2022年是否闰年c语言_C语言接本真题分享19年(2)
  7. layui 分页 固定底部_论layui的使用体验
  8. Leaflet文档阅读笔记-Zoom levels笔记
  9. Liang-Barsky算法
  10. Weak References 和 Soft reference
  11. MFC的DLL中实现定时器功能
  12. Python基础函数学习笔记(三)
  13. uooc c语言作业测验答案,UOOC优课在线组织行为学测验作业答案
  14. 青花瓷(charles)的基本使用和注意事项
  15. Android启动模式分析
  16. Chrome 浏览器安装扩展程序
  17. 什么是外包?定义、最佳实践、挑战和建议
  18. Oracle 使用xtts升级11g-to-19c
  19. SAP权限管理的基本概念
  20. Java实现数据库新增修改防止编码重复功能

热门文章

  1. 小码农也有大梦想!看我如何一步一步攻克面试官,2021最新版!
  2. manjaro折腾记录
  3. 《Python数据分析与挖掘实战》代码问题
  4. Exception in thread “main“ org.apache.http.conn.ConnectTimeoutException: Connect to 134.00.00.00:00
  5. 小猿圈python学习-Selenium爬虫之使用代理ip的方法
  6. Eterm协议中文汉字编码
  7. aix java解压,AIX 7.1 jar unzip解压报错问题解决
  8. 什么是信息流广告?有哪些比较好的信息流广告平台?
  9. XMind 2021mac苹果手机电脑端 专业版思维导图
  10. 挖洞经验 | 利用Slack应用程序窃取Slack用户的下载文件