#include<bits/stdc++.h>
using namespace std;
#define mx 1000000
long mp[200][200],node;
long i,j,k;
long floyd()
{
for(k=1;k<=node;k++)
{
for(i=1;i<=node;i++)
{
for(j=1;j<=node;j++)
{
mp[i][j]=min(mp[i][j],max(mp[i][k],mp[k][j]));
}
}
}
}
main()
{
long long edge,query,cs=0,ts=1;
while(cin>>node>>edge>>query)
{
if(node==0&&edge==0&&query==0)
break;
if(cs>0)
cout<<endl;
cs++;
for(i=1;i<=100;i++)
{
for(j=1;j<=100;j++)
{
if(i==j)
mp[i][j]==0;
else
mp[i][j]=mx;
}
}
long a,b,wt,sour,desti;
for(i=1;i<=edge;i++)
{
cin>>a>>b>>wt;
mp[a][b]=wt;
mp[b][a]=wt;
}
floyd();
printf("Case #%ld\n",ts++);
for(i=1;i<=query;i++)
{
cin>>sour>>desti;
if(mp[sour][desti]==mx||mp[sour][desti]==0)
{
printf("no path\n");
}
else
{
printf("%ld\n",mp[sour][desti]);
}
}
}
}
using namespace std;
#define mx 1000000
long mp[200][200],node;
long i,j,k;
long floyd()
{
for(k=1;k<=node;k++)
{
for(i=1;i<=node;i++)
{
for(j=1;j<=node;j++)
{
mp[i][j]=min(mp[i][j],max(mp[i][k],mp[k][j]));
}
}
}
}
main()
{
long long edge,query,cs=0,ts=1;
while(cin>>node>>edge>>query)
{
if(node==0&&edge==0&&query==0)
break;
if(cs>0)
cout<<endl;
cs++;
for(i=1;i<=100;i++)
{
for(j=1;j<=100;j++)
{
if(i==j)
mp[i][j]==0;
else
mp[i][j]=mx;
}
}
long a,b,wt,sour,desti;
for(i=1;i<=edge;i++)
{
cin>>a>>b>>wt;
mp[a][b]=wt;
mp[b][a]=wt;
}
floyd();
printf("Case #%ld\n",ts++);
for(i=1;i<=query;i++)
{
cin>>sour>>desti;
if(mp[sour][desti]==mx||mp[sour][desti]==0)
{
printf("no path\n");
}
else
{
printf("%ld\n",mp[sour][desti]);
}
}
}
}
কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন