Cod sursa(job #3211664)

Utilizator Alex_DumitrascuAlex Dumitrascu Alex_Dumitrascu Data 9 martie 2024 20:39:02
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <bits/stdc++.h>

#define ll long long

//#define fin cin
//#define fout cout

using namespace std;

ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");

vector < pair<int, int> > g[50005];

vector <int> dist (50005, INT_MAX);
bool done[50005];
/*
Pornim de la un nod
Alegem cel mai apropiat nod de el
Facem Reducerea
*/
int n, m;
void dijkstra (int nod)
{
    done[nod]=1;
    dist[nod]=0;
    for (int i=1; i<n; i++) {
        int min_dist=INT_MAX, min_nod;
        for (pair<int, int> vecin : g[nod]) {
            int new_dist=dist[nod]+vecin.second;
            dist[vecin.first]=min(dist[vecin.first], new_dist);
        }
        for (int j=1; j<=n; j++) {
            if (done[j]) continue;
            if (dist[j]<min_dist) {
                min_dist=dist[j];
                min_nod=j;
            }
        }
        nod=min_nod;
        done[nod]=1;
    }
}

int main()
{
    fin.tie(0); fin.sync_with_stdio(false);
    int x, y, z;
    fin>>n>>m;
    for (int i=1; i<=m; i++) {
        fin>>x>>y>>z;
        g[x].push_back({y, z});
    }
    dijkstra(1);
    for (int i=2; i<=n; i++) {
        fout<<dist[i]<<' ';
    }
    return 0;
}