题意:一个含有n个结点,m条边的无向图,每条边有一个噪音值,另有n次询问,对每次询问求出起点到终点这路径中最大噪音值最小的噪音值,,有点绕= =。如果没有无法达到,输出no path
#include<cstdio>
#include<cstring>
const int maxn = 101;
const int INF = 1<<30;
int d[maxn][maxn];
int Max(int a,int b){return a>b?a:b;}
int Min(int a,int b){return a<b?a:b;}
int main()
{
int n,m,c,cas=0;
while(scanf("%d%d%d",&n,&m,&c)&&(n+m+c))
{
int u,v,w;
for(int i=0;i<=n;i++)
for(int j=0;j<=n;j++)
d[i][j]=INF;
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&u,&v,&w);
d[u][v]=d[v][u]=w;
}
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
int temp=Max(d[i][k],d[k][j]);
d[i][j]=Min(d[i][j],temp);
}
if(cas!=0)printf("\n");
printf("Case #%d\n",++cas);
for(int i=0;i<c;i++)
{
scanf("%d%d",&u,&v);
if(d[u][v]==INF)
printf("no path\n");
else
printf("%d\n",d[u][v]);
}
}
}