尚在调试中。。。。。
#include<cstdio>
#include<iostream>
#define MAX 299999999
using namespace std;
long long a[301][301];
int main()
{
int m,n,t;
int i,j,k;
scanf("%d %d %d",&n,&m,&t);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=MAX;
for(i=1;i<=n;i++)
a[i][i]=0;
for(i=1;i<=m;i++)
{
int x1,x2,x3;
scanf("%d %d %lld",&x1,&x2,&x3);
a[x1][x2]=x3;
}
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][j]>a[i][k]+a[k][j])
a[i][j]=a[i][k]+a[k][j];
for(i=1;i<=t;i++)
{
int x1,x2;
scanf("%d %d",&x1,&x2);
if(a[x1][x2]==MAX)
printf("-1\n");
else
printf("%lld\n",a[x1][x2]);
}
return 0;
}