bellman_ford算法

#include
#include
#include
const int N = 510, M = 10010;
using namespace std;
int n, m, k, dist[N], backup[N];
struct edge
{
    int a,b,w;
}edgs[M];

int bellman_ford()
{
    memset(dist, 0x3f, sizeof dist);
    for (int i = 0; i < k; i++)
    {

         dist [1]=0 ;
        memcpy(backup, dist, sizeof dist);
        for (int j = 0; j < m; j++)
        {
            int a = edgs[j].a, b = edgs[j].b, w = edgs[j].w;
            dist[b] = min(dist[b], dist[a] + w);
        }
    }
    if (dist[n] < 0x3f / 2)return dist[N];
    else return -1;
}
int main()
{
    cin >> n >> m >> k;
    for (int i = 0; i < n; i++)
    {
        int a, b, w;
        cin >> a >> b >> w;
        edgs[i] = {a,b,w};
    }
    int t = bellman_ford();
}

你可能感兴趣的:(算法)