Cod sursa(job #3239049)

Utilizator arnold23Arnold Tempfli arnold23 Data 1 august 2024 17:49:22
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.26 kb
#include<fstream>
#include<iostream>
#define MAXN 50001
#define INF 999999999

using namespace std;

short visited[MAXN];
int dist[MAXN];
int n, m;

int getNearest() {
    int min = INF;
    int poz = 0;
    for (int i = 1; i<=n; i++) {
        if ((visited[i] == 0) && (dist[i] < min)) {
            min = dist[i];
            poz = i;
        }
    }

    return poz;
}

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

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


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

    for (int i = 1; i<=n; i++) {
        int nearest = getNearest();
        visited[nearest] = 1;
        for (int j = 1; j<=n; j++) {
            if (g[nearest][j] != 0) {
                if ((dist[nearest] + g[nearest][j] < dist[j])) {
                    dist[j] = dist[nearest] + g[nearest][j];
                }
            }
        }
    }


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

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