数据小
#include<stdio.h> #include<string.h> #include<math.h> #include<time.h> #include<map> #include<algorithm> #include<stdlib.h> #include<queue> #include<stack> using namespace std; #define ll long long int mp[205][205]; int main() { int n,m,i,j,x,y,w,a,b,k,q; scanf("%d%d",&n,&m); for(i=0; i<=n; i++) for(j=0; j<=n; j++) { if(i==j) mp[i][j]=0; else mp[i][j]=inf; } for(i=0; i<m; i++) { scanf("%d%d%d",&x,&y,&w); if(w<mp[x][y]) { mp[x][y]=w; mp[y][x]=w; } } for(k=1; k<=n; k++) for(i=1; i<=n; i++) for(j=1; j<=n; j++) if(mp[i][k]!=inf&&mp[k][j]!=inf) { int big=max(mp[i][k],mp[k][j]); mp[i][j]=min(mp[i][j],big); } scanf("%d",&q); for(i=0; i<q; i++) { scanf("%d%d",&a,&b); if(mp[a][b]==inf) printf("-1 "); else printf("%d ",mp[a][b]); } return 0; }