图论——最短路径——floyd

来源:互联网 发布:苏州方正软件 编辑:程序博客网 时间:2024/06/10 07:18

floyd 模板

#include<stdio.h>#include<iostream>#include<math.h>#include<stdlib.h>#include<ctype.h>#include<algorithm>#include<vector>#include<string>#include<queue>#include<stack>#include<set>#include<map>#include <string>#include <sstream>#include <time.h>using namespace std;int d[1110][1110];int main ()    {    int n,m;    while (scanf ("%d %d",&n,&m)!=EOF)    {        for (int i=0;i<n;i++)            for (int j=0;j<n;j++)            {                if (i==j)                    d[i][j]=0;                else                     d[i][j]=1000010;            }        int a,b,c;        for (int i=0;i<m;i++)        {            scanf ("%d%d%d",&a,&b,&c);            if (d[a][b]>c)            {                d[a][b]=d[b][a]=c;            }        }        for (int k=0;k<n;k++)            for (int i=0;i<n;i++)                for (int j=0;j<n;j++)                {                    if (  d[i][j] >  d[i][k]+d[k][j] )                        d[i][j] =  d[i][k]+d[k][j] ;                }        int start ,end;        scanf ("%d %d",&start ,&end);        if (d[start][end]==1000010)            printf("-1\n");        else            printf("%d\n",d[start][end]);    }    return 0;}


0 0
原创粉丝点击