Cod sursa(job #1980946)

Utilizator NineshadowCarapcea Antonio Nineshadow Data 14 mai 2017 13:54:26
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <bits/stdc++.h>
#define MAXN 50005
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
struct edge{
    int v,c;
    edge(int v=0, int c=0):v(v),c(c){}
    bool operator<(edge oth) const{
        return c<oth.c;
    }
};
int n,m,D[MAXN],viz[MAXN],t[MAXN];
vector<edge> G[MAXN];
void Dijkstra(int s)
{
    for(int i=1;i<=n;++i)
        D[i]=0xfff;
    for(edge i: G[s])
        D[i.v]=i.c;
    D[s]=0;
    viz[s]=1;
    for(int i=1;i<=n;++i)
    {
        int _min=0xffff,k;
        for(int j=1;j<=n;++j)
            if(!viz[j] && D[j]<_min)
                _min=D[j],k=j;
        viz[k]=1;
        for(edge j : G[k])
            if(D[k]+j.c<D[j.v] )
                D[j.v]=D[k]+j.c,t[j.v]=k;
    }
    for(int i=2;i<=n;++i)
        out<<D[i]<<' ';
}
int main()
{
    in>>n>>m;
    for(int i=1;i<=m;++i)
    {
        int a,b,c;
        in>>a>>b>>c;
        G[a].push_back(edge(b,c));
    }
    Dijkstra(1);

    return 0;
}