图结构练习——最短路径

来源:互联网 发布:尤克里里调音软件G 编辑:程序博客网 时间:2024/06/08 05:14
#include<bits/stdc++.h>#define inf 0x3f3f3f3fint a[101][101];int main(){    int n,m,i,j,k,u,v,q;    while(~scanf("%d %d",&n,&m))    {        memset(a,0,sizeof(a));        for(j=0; j<=n; j++)        {            for(i=0; i<=n; i++)            {                if(i==j)                    a[i][j]=0;                else                    a[i][j]=inf;            }        }        for(i=1; i<=m; i++)        {            scanf("%d %d %d",&u,&v,&q);            if(a[u][v]>q)              a[u][v]=a[v][u]=q;        }        for(k=1; k<=n; k++)        {            for(i=1; i<=n; i++)            {                for(j=1; j<=n; j++)                {                        if(i!=j&&a[i][k]<inf&&a[k][j]<inf&&a[i][j]>a[i][k]+a[k][j])                            a[i][j]=a[i][k]+a[k][j];                }            }        }        printf("%d\n",a[1][n]);    }}

0 0