噪音恐惧症(Audiophobia,UVa10048)——floyd变形,最大最小化
2015-01-26 13:29
399 查看
输入一个C个点S条边(C<=100,S<=1000)的无向带权图,边权表示该路径上的噪音值,当噪声值太大时,耳膜可能会受到伤害,所以当你从某点去往另一个点时,总是希望路上经过的最大噪声值最小。输入一些询问,每次询问两个点,输出这两点间最大噪声值最小的路径。
每条路径选取最大的,在所有路径里面选取最小的
每条路径选取最大的,在所有路径里面选取最小的
#include<iostream> #include<cstring> #include<cstdio> #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<<endl; printf("Case #%d\n",Cas++); solve(); } return 0; }
相关文章推荐
- uva 10048 - Audiophobia(floyd 的变形)
- UVa 10048 (Floyd变形) Audiophobia
- uva 10048 - Audiophobia(floyd 的变形)
- 11.3.4 例题11-5 UVA 247 Audiophobia(两点间最大权最小_floyd()变形)
- UVa 10048 Audiophobia / floyd变形
- uva 10048 Audiophobia floyd的变形
- UVA 10048 Audiophobia(Floyd变形)
- Uva 10048 噪音恐惧症——Floyd变形
- UVA - 10048 Audiophobia floyd的变形
- UVa - 10048 - Audiophobia ( Floyd 变形 )
- 11.3.4-uva10048-floyd变形-两点之间路径上最大边的最小值
- uva 10058 Audiophobia floyd变形
- UVa 10048 - Audiophobia(Floyd, Kruskal)
- Uva - 10048 - Audiophobia(Floyd)
- UVa 10048 噪音恐惧症(Floyd)
- Uva 10048 Audiophobia 【floyd】
- UVa 10048 Audiophobia (任意两点最长边的最小化)
- Audiophobia - UVa 10048 Floyd
- uva10048 ( floyd,最大值最小化)
- UVA 10048 - Audiophobia(floyd)