Floyd Warshall

#include <bits/stdc++.h>
#define INF 9999
#define V 4
using namespace std;

void floydWarshall(int graph[V][V])
{
    int res[V][V];
    int i,j,k;
    for(i = 0; i < V; i++)
        for(j = 0; j < V; j++)
            res[i][j] = graph[i][j];
    for(i = 0; i < V; i++)
    {
        for(j = 0; j < V; j++)
        {
            for(k = 0; k < V; k++)
            {
                if(res[j][i] + res[i][k] < res[j][k])
                    res[j][k] = res[j][i]+res[i][k];
            }
        }
    }

    for (i = 0; i < V; i++)
    {
        for (j = 0; j < V; j++)
        {
            if (res[i][j] == INF)
                cout << "INF";
            else
                cout << res[i][j];
        }
        cout << endl;
    }
}

int main(void)
{

    int graph[V][V] = {
                        {0,   5,  INF, 10},
                        {INF, 0,   3, INF},
                        {INF, INF, 0,   1},
                        {INF, INF, INF, 0}
                    };

    floydWarshall(graph);

    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_36607792/article/details/81637355