#include<stdio.h> #include<string.h> #include<math.h> /*本题要特别注意的是移动的距离可能大于数组的长度,因此需要取余数*/ int main() { int m,n,k; scanf("%d%d%d",&n,&m,&k); int str[n+1][n+1]; for(int i=1;i<n+1;i++) { for(int j=1;j<n+1;j++) { str[i][j]=99999; } } for(int i=0;i<m;i++) { int a,b,c; scanf("%d%d%d",&a,&b,&c); if(c<str[a][b]) { str[a][b]=c; } } int flag[1000]={0}; for(int i=0;i<k;i++) { int x,y; scanf("%d%d",&x,&y); if(i!=k) { if(str[x][y]!=99999) { printf("%d\n",str[x][y]); } else { int dis=0; for(int i=x;i<y;i++) { dis+=str[i][i+1]; } printf("%d\n",dis); } } else { if(str[x][y]!=99999) { printf("%d",str[x][y]); } else { int dis=0; for(int i=x;i<y;i++) { dis+=str[i][i+1]; } printf("%d",dis); } } } return 0; } |
Double click to view unformatted code.