View Code of Problem 3818

#include<stdio.h>
#define MAX 999999 
int main(){
	int n,m,k;
	int s[100][100];                        //邻接矩阵 
	int a,b,c;
	while(scanf("%d %d %d",&n,&m,&k)!=EOF) {        //n个点,m个边,佛洛依德算法
         for(int i=1;i<=n;i++)
		 	for(int j=1;j<=n;j++){            //邻接矩阵赋值 
			 	if(i==j)
			 	s[i][j]=0;
			 	else
			 	s[i][j]=MAX;
			 }
		 
		 
		 for(int i=1;i<=m;i++){
		 	scanf("%d %d %d",&a,&b,&c);
		 	  s[a][b]=c;
		 	  s[b][a]=c;
		 } 
		 
		 
		 for(int k=1;k<=n;k++)
		     for(int i=1;i<=n;i++)
			   for(int j=1;j<=n;j++)
			   	if(s[i][j]>s[i][k]+s[k][j])
			   	   s[i][j]=s[i][k]+s[k][j];
			   	   
			   	   
		for(int i=1;i<=k;i++){
			scanf("%d %d",&a,&b);
			printf("%d\n",s[a][b]);
		}
		
	}
} 

Double click to view unformatted code.


Back to problem 3818