10048

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>

#define INF 1000000
using namespace std;

int gr[105][105];

int _mn(int a,int b)
{
	if(a>b)
	return b;
	return a;
}

int _mx(int a,int b)
{
	if(a>b)
	return a;
	return b;
}
int main()
{
	bool f=0;
	int kase=1;
	int C,S,Q;
	int a,b,d;

	while(cin>>C)
	{
		cin>>S>>Q;

		if(C+S+Q==0)
		break;

		for(int i=1;i<105;i++)
		{
			for(int j=1;j<105;j++)
			{
				if(i==j)
				gr[i][j]=0;
				else
				gr[i][j]=INF;
			}
		}
		for(int i=1;i<=S;i++)
		{
			cin>>a>>b>>d;
			gr[a][b]=d;
			gr[b][a]=d;
		}

		for(int i=1;i<=C;i++)
		{
			for(int j=1;j<=C;j++)
			{
				for(int k=1;k<=C;k++)
				{
					gr[j][k]=_mn(gr[j][k],_mx(gr[j][i],gr[i][k]));
				}
			}
		}

		if(f)
		cout<<"\n";
		f=1;
		cout<<"Case #"<<kase++<<"\n";
		for(int i=0;i<Q;i++)
		{
			cin>>a>>b;
			if(gr[a][b]==INF)
			cout<<"no path\n";
			else
			cout<<gr[a][b]<<"\n";
		}
	}
	return 0;
}

 

Leave a Reply

Your email address will not be published. Required fields are marked *