弗洛伊德算法模板

原创 2016年08月30日 19:50:41

弗洛伊德算法求无向图最短路

<strong>#include<cstdio>
#include<cstring>
#include<algorithm>
#define MM 0x3f3f3f3f
#define size 1002
using namespace std;
int n,m,j,i,k,l;
int a[size][size],b[size][size];
int main()
{
    while(~scanf("%d%d",&n,&m)&&n+m)//输入两个数,n点的总数,m边的总数
    {
        for(i=0; i<size; i++)
            for(j=0; j<size; j++)
            {
                if(i!=j)
                    a[i][j]=MM;
                else
                    a[i][j]=0;
                b[i][j]=j;
            }//初始化两个二维数组

        for(i=0; i<m; i++)
        {
            scanf("%d%d%d",&j,&k,&l);
            a[j][k]=l;
            a[k][j]=l;
        }//输入路经端点和路径长

        for(i=1; i<=n; i++)
        {
            for(j=1; j<=n; j++)
            {
                if(i==j)
                continue;
                if(a[i][j]>=MM)
                continue;
                for(k=1; k<=n; k++)
                {
                    if(a[j][k]>a[j][i]+a[i][k])
                    {
                        a[j][k]=a[j][i]+a[i][k];
                        b[j][k]=b[j][i];
                    }
                }
            }
        }

        scanf("%d",&i);//查询的问题数
        while(i--)
        {
            scanf("%d%d",&j,&k);//输入两个点输出之间的最短路
            if(a[j][k]<MM)
            printf("%d\n",a[j][k]);
            else
            printf("-1\n");//两点之间没有路
        }
        printf("结束,\n输入下一个图\n");
    }
    return 0;
}

/**

21 42
1 2 3
1 3 5
1 8 4
2 3 2
2 4 9
2 6 5
3 8 2
3 7 1
3 11 8
3 6 1
4 6 2
4 12 7
4 5 6
5 13 4
6 11 2
6 12 1
7 8 3
7 10 2
7 11 2
7 18 5
8 9 1
8 10 5
9 19 2
9 10 4
10 19 7
10 18 2
11 18 3
11 14 1
11 17 2
12 14 4
12 13 3
13 15 3
14 17 10
14 15 2
15 16 2
16 17 1
16 21 3
17 21 4
18 19 6
18 20 2
19 20 3
20 21 1
*/</strong>


版权声明:本文为博主原创文章,未经博主允许不得转载。

Floyd(弗洛伊德)算法 详解+模板

弗洛伊德算法介绍和Dijkstra算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯...

弗洛伊德算法精解与模板

弗洛伊德算法是把图中每两个节点之间的最短路都求出来。

最短路(floyd算法)模板

#include #include #define inf 1000000; using namespace std; int map[1000][1000],dis[1000][1000]; int...

ACM算法模板 · 一些常用的算法模板-模板合集(打比赛专用)

萌新常用的都在这了,本萌新的模板集。

弗洛伊德算法(求各顶点间最短路径):可打印最短路径

#include #include #include using namespace std; #define INFINITY 65535 #define MAX_VERTEX_...
  • cxllyg
  • cxllyg
  • 2012年05月27日 11:01
  • 12392

最短路径问题---Floyd算法详解

前言 Genius only means hard-working all one’s life. Name:Willam Time:2017/3/81、最短路径问题介绍问题解释: 从图中的...

弗洛伊德算法详解

  • 2012年04月07日 22:33
  • 42KB
  • 下载

弗洛伊德算法调试

  • 2012年02月28日 17:45
  • 733B
  • 下载

HDU 2544 最短路 (弗洛伊德模板)

Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想...
  • kavu1
  • kavu1
  • 2016年03月06日 07:42
  • 346

校园导游 - 弗洛伊德算法

  • 2009年01月16日 10:43
  • 5KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:弗洛伊德算法模板
举报原因:
原因补充:

(最多只允许输入30个字)