P2888 [USACO07NOV]牛栏Cow Hurdles
行 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
注意:memset(dis,0x7f,sizeof dis);dis[0][0]=0x7f7f7f7f
但是dis必须是int型的
#include<bits/stdc++.h>
using namespace std;
#define debug(x) cout<<"# "<<x<<" "<<endl;
typedef long long ll;
const ll mod=2147483647000;
const ll N=307;
const ll INF=0x7f;
int dis[N][N],n,m,t;
int main()
{
ll a,b,c;
cin>>n>>m>>t;
memset(dis,INF,sizeof dis);
for(int i=1;i<=m;++i)
cin>>a>>b>>c,dis[a][b]=c;
for(int k=1;k<=n;++k)
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
dis[i][j]=min(dis[i][j],max(dis[i][k],dis[k][j]));
int x,y;
for(int i=1;i<=t;++i)
{
cin>>x>>y;
if(dis[x][y]==0x7f7f7f7f)cout<<"-1"<<endl;
else cout<<dis[x][y]<<endl;
}
return 0;
}