Cod sursa(job #3239080)

Utilizator arnold23Arnold Tempfli arnold23 Data 2 august 2024 11:19:21
Problema Algoritmul lui Dijkstra Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include<fstream>
#include<iostream>
#include<vector>
#define MAXN 50001
#define INF 999999999

using namespace std;

int dist[MAXN];
int n, m;

struct vert {
    int x, y, c;
};

vector<vert> v;

void add(int x, int y, int c) {
    vert vertex;
    vertex.x = x;
    vertex.y = y;
    vertex.c = c;
    v.push_back(vertex);
}   

int main(void)
{
    ifstream in("dijkstra.in");
    ofstream out("dijkstra.out");

    in >> n >> m;
    for (int i = 0; i < m; i++) {
        int a, b, c;
        in >> a >> b >> c;
        add(a, b, c);
    }

    for (int i = 0; i <= n; i++) {
        dist[i] = INF;
    }
    dist[1] = 0;

    short finished = 0;
    while (finished != 1) {
        finished = 1;
        for (int i = 0; i<v.size(); i++) {
            if (dist[v[i].y] > dist[v[i].x] + v[i].c) {
                dist[v[i].y] = dist[v[i].x] + v[i].c;
                finished = 0;
            }
        }
    }

    for (int i = 2; i<=n; i++) {
        if (dist[i] == INF) {
            out << "0 ";
        } else {
            out << dist[i] << " ";
        }
    }

    in.close();
    out.close();
    return 0;
}