floyd

来源:互联网 发布:电脑硬盘恢复数据 编辑:程序博客网 时间:2024/06/16 08:04

感谢每一位帮助我的人,谢谢你们!

#include<iostream>#include<cstdio>using namespace std;const int maxn = 205;const int INF = 999999999;int a[maxn][maxn];int main(){    int i, j,n,m,q;    while(scanf("%d%d",&n,&m)==2)    {        if(n==0&&m==0) break;    for(i=1; i<=n; i++)        for(j=1; j<=n; j++)           {    if(i==j) a[i][i]=0;               else a[i][j]=INF;           }//初始化    for( i=0;i<m;i++)    {        int k,j,l;        cin>>k>>j>>l;               if(l<a[k][j])            {a[k][j]=l;a[j][k]=l;}    }//赋值       for(int k=1;k<=n;k++)            for(int i=1;i<=n;i++)              for(int j=1;j<=n;j++)                  a[i][j]=(a[i][k]+a[k][j])<a[i][j]?(a[i][k]+a[k][j]):a[i][j];//floyd    scanf("%d",&q);    while(q--)    {        int u,v;        scanf("%d%d",&u,&v);        printf("%d\n",a[u][v]);    }    }    return 0;}


原创粉丝点击