Cod sursa(job #2945550)

Utilizator ana_nosaAnamaria Nosa ana_nosa Data 23 noiembrie 2022 21:25:07
Problema Algoritmul lui Dijkstra Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
#define M 50004

struct mu {
    int v; int c;
    bool operator<(const mu &z) const {
        return c>z.c;
    }
};
priority_queue <mu> q;
vector <mu> a[M];
int n,viz[M],d[M];
void Dijkstra(int start)
{   int i,x; mu z;
    for(i=1;i<=n;i ++) d[i]=1001001001;
    d[start]=0; z.v=start; z.c=0;
    q.push(z);
    while(!q.empty()) {
        x=q.top().v;
        q.pop();
        if(viz[x]==0) {
            viz[x]=1;
            for(i=0;i<a[x].size();i++) {
                z=a[x][i];
                if(d[z.v]>d[x]+z.c) {
                    d[z.v]=d[x]+z.c;
                    q.push(z);
                }
            }
        }
    }
}
int main()
{   ifstream fin("dijkstra.in"); ofstream fout("dijkstra.out");
    int i,m,x; mu z;
    fin>>n>>m;
    for(i=1;i<=m;i++) {
        fin>>x>>z.v>>z.c;
        a[x].push_back(z);
    }
    Dijkstra(1);
    for(i=2;i<=n;i ++)
        fout<<(d[i]<1001001001?d[i]:0)<<' ';
    return 0;
}