计蒜客 蒜头君的训练室
问题描述
蒜头君的训练室有 N 个站点,另外有 M 条单向边连接这些站点。第 i 条路从 Si站到 Ei站,有高度为 Hi的围栏,蒜头君是需要跳跃的。
现在蒜头君们有 T 个任务要完成。第 ii 个任务,蒜头君要从 Ai站到 Bi站,蒜头君想要他们路径中最高围栏尽可能小。请你确定这个高度。
输入格式
第一行输入三个整数 N, M, T。(1≤N≤300,1≤M≤25000,1≤T≤40000)。
接下来 M 行,每行三个整数 Si,Ei,Hi(1≤Si,Ei≤N,1≤Hi≤10e6)
再接下来 T 行,每行两个整数 Ai,Bi。(1≤Ai,Bi≤N)
除了这 M 组关系,其他任意两人之间均不相识。
输出格式
对于每个询问,输出最小的最大高度。若无法到达,则输出−1。
样例输入
5 6 3
1 2 12
3 2 8
1 3 5
2 5 3
3 4 4
2 4 8
3 4
1 2
5 1
样例输出
4
8
-1
解题思路:不断更新两个点之间可到路径的最高障碍物的最小值
#include<bits/stdc++.h>
using namespace std;
const int MAX_N=310;
const int MAX_M=25010;
const int inf=0x3f3f3f3f;
int n,m,t;
int g[MAX_N][MAX_N];
void init(){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i==j){g[i][j]=0;}else{g[i][j]=inf;}}}
}
void insert(int u,int v,int w){g[u][v]=w;
}
void floyd(){for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(g[i][k]!=inf&&g[k][j]!=inf){int hh=max(g[i][k],g[k][j]);if(hh<g[i][j]){g[i][j]=hh;}}}}}
}
int main(){scanf("%d%d%d",&n,&m,&t);init();int u,v,w;for(int i=1;i<=m;i++){scanf("%d%d%d",&u,&v,&w);insert(u,v,w);}floyd();int a,b;for(int i=1;i<=t;i++){scanf("%d%d",&a,&b);if(g[a][b]!=inf){printf("%d\n",g[a][b]);}else{cout<<"-1"<<endl;}}return 0;
}
计蒜客 蒜头君的训练室相关推荐
- 计蒜客 - 蒜头君的任务
计蒜客 蒜头君的任务 题目描述 蒜头君的上司给蒜头君布置了一个任务,蒜头君维护一个数列,要求提供以下两种操作: 查询操作. 语法:Q L 功能:查询当前数列中末尾 L L L 个数中的最大的数,并输出 ...
- 计蒜客--蒜头君的新游戏
1000ms 131072K 工作空闲之余,蒜头君经常带着同事们做游戏,最近蒜头君发明了一个好玩的新游戏:n 位同事围成一个圈,同事 A 手里拿着一个兔妮妮的娃娃.蒜头君喊游戏开始,每位手里拿着娃娃 ...
- 计蒜客-蒜头君回家(bfs)
蒜头君要回家,但是他家的钥匙在他的朋友花椰妹手里,他要先从花椰妹手里取得钥匙才能回到家.花椰妹告诉他:"你家的钥匙被我复制了很多个,分别放在不同的地方." 蒜头君希望能尽快回到家中 ...
- 计蒜客--蒜头君回家
蒜头君要回家,但是他家的钥匙在他的朋友花椰妹手里,他要先从花椰妹手里取得钥匙才能回到家.花椰妹告诉他:"你家的钥匙被我复制了很多个,分别放在不同的地方." 蒜头君希望能尽快回到家中 ...
- 计蒜客 蒜头君学英语
问题 蒜头君快要考托福了,这几天,蒜头君每天早上都起来记英语单词.花椰妹时不时地来考一考蒜头君:花椰妹会询问蒜头君一个单词,如果蒜头君背过这个单词,蒜头君会告诉花椰妹这个单词的意思,不然蒜头君会跟花椰 ...
- 计蒜客 蒜头君的购物口袋2 01背包问题
蒜头君去超市购物,他有一只容量为 V 的购物袋,同时他想买n 件物品,已知每件物品的体积 ivi和重要度pi.蒜头君想知道,挑选哪些物品放入购物袋中,可以使得买到的物品重要度之和最大,且物品体积和 ...
- 计蒜客- 蒜头君的工厂
E 蒜头君的工厂需要生产 n 个产品,每个产品会在记录本上记录开始生产的时间 x 以及完成生产的时间 y. 现在蒜头君拿到这本记录本以后想知道最多有多少件产品同时在生产线上生产. 注意:在同一时刻总是 ...
- [Java] 计蒜客---蒜头君的玩具
一.内容 二.思路 用差分数组算出每个点总共被包含了几次,比如1-4就等于1-4区间的数组都加上1.这样a数组最终保存的就是装了这个点总共被覆盖几次. 由于每次只能选3条线段,所以数组里面每个点的值必 ...
- 计蒜客 蒜头君的数轴
不考虑某个区间,其他区间必须距离相等,也就是要划分为距离为最大公约数. 那么如何快速求解任意$n-1$个区间的最大公约数?用l[i]表示前i个数的最大公约数,r[i]表示后$(n-i)$个区间的最大公 ...
最新文章
- 面试官问: 如何保证 MQ消息是有序的?
- 英特尔专家告诉你 信息时代如何掌控数据安全(附视频PPT)
- 主板uefi和传统引导方式区别_反吊膜与传统污水池加盖方式有什么区别
- 【PAT乙级】1092 最好吃的月饼 (20 分)
- linux shell zsh,Linux终极shell Z Shell 用强大的zsh oh-my-zsh把Bash换掉
- 字节跳动Deep Retrieval召回模型笔记
- 一个多线程死锁案例,如何避免及解决死锁问题
- 全国各高校开学时间汇总!
- Spring Cloud Sleuth + Zipkin 监控微服务(一)
- ASP.NET MVC3 Model验证总结
- 中标麒麟系统安装步骤
- 编译出的CHM文档读取页面发生脚本错误
- OrCAD Capture原理图中批量修改网络名
- PyBullet快速上手教程
- Rabbitmq 基础
- inflect java_Python lemminflect包_程序模块 - PyPI - Python中文网
- 2021最新版成语接龙小程序源码
- android 读文字软件,文字语音朗读软件
- JavaScript中字符串数组赋值失败,不是每个字符串,却是字符。
- R语言将向量数据按照行方式转化为矩阵数据(设置参数byrow为TRUE)、计算矩阵数据的特征值(eigenvalue)