ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

奶牛篱笆

2019-12-28 09:05:46  阅读:328  来源: 互联网

标签:int 高度 Bi Ai 篱笆 奶牛


 

【问题描述】

  FJ想让奶牛们准备乡村跳绳比赛,所以贝茜和一群奶牛都在准备跳过篱笆。

  因为它们都太累了,它们都想用尽量少的能量去跳过尽量高的篱笆。

  显然,跳过几个矮篱笆对奶牛来说并不困难,但跳过一个高的篱笆还是有压力的。因此,奶牛们只关心高度在它们能跳过最高的篱笆以下的篱笆。

  奶牛们的练习房有 N 个位置,方便起见,我们用 1..N 来标记。一个有 M 个元素的集合,表示连接一对位置的单向道路,也被标记为 1..M。道路 i 从位置 Si​ 到位置 Ei​ 并且包含一个篱笆高度 Hi​。奶牛们在它们经过的路上必须跳过篱笆。

  奶牛有 T 个任务要完成。任务 i 包含两个不同的数 Ai​ 和 Bi​(1≤Ai​,Bi​≤N),表示一头奶牛必须从位置 Ai​ 到位置 Bi​ (通过穿过一条或多条路)。奶牛们当它们从Ai​ 到 Bi​ 时,想走一条跳过的最高的篱笆最小的路。你的任务是写一个程序计算出这个最小的高度。

【输入格式】

  第一行:三个用空格隔开的整数:N,M 和 T。
  第二行至第 M+1 行:第 i+1 行包含三个用空格隔开的整数:Si​,Ei​ 和 Hi​。
  第 M+2M+2 行至第M+T+1行:第 i+M+1 行包含两个用空格隔开的用来描述任务 ii 的整数 Ai​和 Bi​。

【输出格式】

  第一行至第 T 行:第 i 行包含任务 i的结果,要求输出满足条件的最小高度.如果在两个位置中不可能满足条件则输出 -1。

【输入输出样例】

 Input

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

 Output

4
8
-1

【数据说明】

  对于 100% 的数据 1≤N≤500,1≤m≤25000,1≤T≤40000,边权不超过 10^6。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=505;
 4 const int oo=0x3f3f3f3f;
 5 int N,M,T;
 6 int dist[maxn][maxn];
 7 void init()
 8 {
 9     cin>>N>>M>>T;
10     for(int i=1;i<=N;i++)
11     for(int j=1;j<=N;j++)
12         dist[i][j]=oo;
13         
14     for(int i=1;i<=M;i++)
15     {
16         int x,y,z;
17         scanf("%d%d%d",&x,&y,&z);
18         dist[x][y]=z;
19     }
20 }
21 
22 void floyd()
23 {
24     for(int k=1;k<=N;k++)
25     for(int i=1;i<=N;i++)
26     for(int j=1;j<=N;j++)
27     dist[i][j]=min(dist[i][j],max(dist[i][k],dist[k][j]));
28     //i->j的最小的最高篱笆高度=min(i->j的篱笆高度,max(i->k的篱笆高度, k->j的篱笆高度) 
29 }
30 
31 int main()
32 {
33     init();
34     floyd();
35     for(int i=1;i<=T;i++)
36     {
37         int a,b;
38         scanf("%d%d",&a,&b);
39         if(dist[a][b]==oo) printf("-1\n");
40         else printf("%d\n",dist[a][b]);
41     }
42     return 0;
43 }

标签:int,高度,Bi,Ai,篱笆,奶牛
来源: https://www.cnblogs.com/poised/p/12110716.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有