Audiophobia UVA - 10048
题意:
给你m条边。
要你求任意两点之间的最大边权(尽可能小)
思路:
- 数据小,且求任意两点,可以用floyd。
AC
#include <iostream>
#include <cstring>
#define mst(x,a) memset(x,a,sizeof(x))
#define For(i,x,y) for(int i=(x); i<=(y); i++)
using namespace std;
const int inf=0x3f3f3f3f;
int d[150][150];
int n,m,q;
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int kase=0;
while(cin>>n>>m>>q,n||m||q){
if(kase)cout<<endl;
int u,v,val;
For(i,1,n)For(j,1,n){
if(i==j)d[i][j]=0;
else d[i][j]=inf;
}
For(i,1,m)cin>>u>>v>>val,d[u][v]=d[v][u]=val;
For(k,1,n)For(i,1,n)For(j,1,n)d[i][j]=min(d[i][j],max(d[i][k],d[k][j]));
cout<<"Case #"<<++kase<<endl;
For(i,1,q){
cin>>u>>v;
if(d[u][v]==inf)cout<<"no path"<<endl;
else cout<<d[u][v]<<endl;
}
}
return 0;
}