• 157. [USACO Nov07] 奶牛跨栏


    157. [USACO Nov07] 奶牛跨栏

                   输入文件:hurdles.in   输出文件:hurdles.out   简单对比
       时间限制:1 s   内存限制:128 MB

    译 by CmYkRgB123

    描述

    Farmer John 想让她的奶牛准备郡级跳跃比赛,贝茜和她的伙伴们正在练习跨栏。她们很累,所以她们想消耗最少的能量来跨栏。

    显然,对于一头奶牛跳过几个矮栏是很容易的,但是高栏却很难。于是,奶牛们总是关心路径上最高的栏的高度。

    奶牛的训练场中有 N (1 ≤ N ≤ 300) 个站台,分别标记为1..N。所有站台之间有M (1 ≤ M ≤ 25,000)条单向路径,第i条路经是从站台Si开始,到站台Ei,其中最高的栏的高度为Hi (1 ≤ Hi ≤ 1,000,000)。无论如何跑,奶牛们都要跨栏。

    奶牛们有 T (1 ≤ T ≤ 40,000) 个训练任务要完成。第 i 个任务包含两个数字 Ai 和 Bi (1 ≤ Ai ≤ N; 1 ≤ Bi ≤ N),表示奶牛必须从站台Ai跑到站台Bi,可以路过别的站台。奶牛们想找一条路径从站台Ai到站台Bi,使路径上最高的栏的高度最小。

    你的任务就是写一个程序,计算出路径上最高的栏的高度的最小值。

    输入

    行 1: 两个整数 N, M, T

    行 2..M+1: 行 i+1 包含三个整数 Si , Ei , Hi

    行 M+2..M+T+1: 行 i+M+1 包含两个整数,表示任务i的起始站台和目标站台: Ai , Bi

    输出

    行 1..T: 行 i 为一个整数,表示任务i路径上最高的栏的高度的最小值。如果无法到达,输出 -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

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 
     6 int n,m,t,u,v,w,x,y;
     7 int dis[350][350];
     8 
     9 int main()
    10 {
    11     freopen("hurdles.in","r",stdin);
    12     freopen("hurdles.out","w",stdout);
    13     cin>>n>>m>>t;
    14     memset(dis,0x3f,sizeof(dis));
    15     for(int i=1;i<=m;i++){
    16         cin>>u>>v>>w;
    17         dis[u][v]=min(dis[u][v],w);
    18     }
    19     for(int k=1;k<=n;k++)
    20       for(int i=1;i<=n;i++)
    21         for(int j=1;j<=n;j++)
    22         {
    23             dis[i][j]=min(dis[i][j],max(dis[i][k],dis[k][j]));
    24         }
    25     for(int i=1;i<=t;i++)
    26     {
    27         cin>>x>>y;
    28         if(dis[x][y]==0x3f3f3f3f)
    29         cout<<"-1"<<endl;
    30         else
    31         cout<<dis[x][y]<<endl;
    32     }
    33     fclose(stdin);fclose(stdout);
    34     return 0;
    35 }
  • 相关阅读:
    华为OD机试 :找终点
    华为OD机试 :磁盘容量排序
    剑指Offer-从上到下打印二叉树
    GO语言学习笔记3-int与byte类型转换
    剑指Offer-树的子结构
    LeetCode :21.合并两个有序链表
    LeetCode :206.反转链表
    剑指Offer-删除链表的结点
    剑指Offer-调整数组顺序使奇数位于偶数前面
    如何创建ts+react项目
  • 原文地址:https://www.cnblogs.com/wsdestdq/p/6731892.html
Copyright © 2020-2023  润新知