uva 10048 图论--最短路 flody算法

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 1050
int a[N][N];
int main()
{
	int c,s,q,xx,yy,va,cas=0,x,y,temp;
	while(~scanf("%d%d%d",&c,&s,&q))
	{
		if(c==0&&q==0&&s==0)
			break;
		for(int i=1;i<=c;i++)
		{
			for(int j=1;j<=c;j++)
			{
				if(i==j)
					a[i][j]=0;
				else
					a[i][j]=-1;
			}
		}
		while(s--)
		{
			scanf("%d%d%d",&xx,&yy,&va);
			a[yy][xx]=a[xx][yy]=va;
		}
		for(int k=1;k<=c;k++)
		{
			for(int i=1;i<=c;i++)
			{
				for(int j=1;j<=c;j++)
				{
					if(a[i][k]!=-1&&a[k][j]!=-1)
					{	
						temp=max(a[i][k],a[k][j]);
						if(a[i][j]==-1||temp<a[i][j])
						{
								a[i][j]=temp;
						}
					}
				}
			}
		}
		if(cas)
			puts("");
		printf("Case #%d\n",++cas);
		while(q--)
		{
			scanf("%d%d",&x,&y);
			if(a[x][y]!=-1)
				printf("%d\n",a[x][y]);
			else
				puts("no path");
		}
	}
	return 0;
}

你可能感兴趣的:(uva 10048 图论--最短路 flody算法)