#|噪音恐惧症(Audiophobia,UVa10048)——floyd变形,最大最小化



输入一个C个点S条边(C<=100,S<=1000)的无向带权图,边权表示该路径上的噪音值,当噪声值太大时,耳膜可能会受到伤害,所以当你从某点去往另一个点时,总是希望路上经过的最大噪声值最小。输入一些询问,每次询问两个点,输出这两点间最大噪声值最小的路径。


每条路径选取最大的,在所有路径里面选取最小的


【#|噪音恐惧症(Audiophobia,UVa10048)——floyd变形,最大最小化】

#include #include #include #define FORD(i,a,b) for(int i=(a); i<=(b); ++i) const int maxn=110,INF=0x3f3f3f3f; using namespace std; int n,m,q; int g[maxn][maxn]; void input(){ //FORD(i,1,n)FORD(j,i,n) g[i][j]=g[j][i]=INF; memset(g,INF,sizeof(g)); int u,v,w; while(m--){ scanf("%d%d%d",&u,&v,&w); g[u][v]=g[v][u]=w; } } void floyd(){ FORD(k,1,n)FORD(i,1,n){ if(g[i][k]!=INF){ FORD(j,1,n){ if(g[k][j]!=INF){ g[i][j]=min(g[i][j],max(g[i][k],g[k][j])); } } } } } void solve(){ int u,v; while(q--){ scanf("%d%d",&u,&v); if(g[u][v]==INF) printf("no path\n"); else printf("%d\n",g[u][v]); } } int main() { #ifndef ONLINE_JUDGE freopen("in.cpp","r",stdin); #endif // ONLINE_JUDGE int Cas=1; while(scanf("%d%d%d",&n,&m,&q),n,m,q){ input(); floyd(); if(Cas>1) cout<



    推荐阅读