七龙珠 Floyd-Warshall 弗洛伊德算法

来源:互联网 发布:中兴 南京 云计算部门 编辑:程序博客网 时间:2024/05/16 15:37
#include <iostream>#include <math.h>#include <algorithm>#include <string.h>#include <stdio.h>using namespace std;int inf=99999999;int main(){    int t,n,m;    int a[310][310];    while(~scanf("%d",&t)){    while(t--){        scanf("%d%d",&n,&m);        for(int i=1;i<=n;i++){       //初始化            for(int j=1;j<=n;j++){                if(i==j){a[i][j]=0;}                else a[i][j]=inf;            }        }        for(int i=1;i<=n;i++){       // 赋值            for(int j=1;j<=n;j++){                scanf("%d",&a[i][j]);            }        }        for(int k=1;k<=n;k++){             //floyed warshall            for(int i=1;i<=n;i++){                for(int j=1;j<=n;j++){                    if(a[i][j]>a[i][k]+a[k][j]){                        a[i][j]=a[i][k]+a[k][j];                    }                }            }        }        while(m--){            int one,two,three,four,five,six;            scanf("%d%d%d%d%d%d",&one,&two,&three,&four,&five,&six);            printf("%d\n",a[one][two]+a[two][three]+a[three][four]+a[four][five]+a[five][six]);        }    }    }    return 0;}

0 0
原创粉丝点击