Floyd-Warshal

《挑戰程序設計競賽》,初級篇–圖

// Floyd-Warshall  O(V*V*V)
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define maxv 101
#define maxe 101
#define INF 9999

int d[maxv][maxv];
int V;

void init()
{
    for(int i = 0; i < V; i++)
        for(int j = 0; i < V; i++)
            d[i][j] = INF;
    for(int i = 0; i < V; i++)
        d[i][i] = 0;
    d[0][1] = 1; d[0][2] = 3;
    d[1][2] = 4; d[2][3] = 2;
}

void warshall_floyd()
{
    for(int k = 0; k < V; k++)
        for(int i = 0; i < V; i++)
            for(int j = 0; j < V; j++)
                d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章