Cod sursa(job #2031562)

Utilizator eragon0502Dumitrescu Dragos eragon0502 Data 3 octombrie 2017 14:29:50
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <cstdio>
#include <vector>

using namespace std;

struct ceva{
int nod,c;
};

vector <ceva> v[50005];
int q[250005],cost[250005],viz[250005],sol[250005],n,m,nr=0,inf=1000000000;

void dijkstra(int k)
{
    if(viz[k]==1)
        return;
    viz[k]=1;
    for(int i=0;i<v[k].size();++i)
    {
        if(sol[v[k][i].nod]>v[k][i].c+sol[k])
        {
            sol[v[k][i].nod]=v[k][i].c+sol[k];
            viz[v[k][i].nod]=0;
        }
    }
    for(int i=0;i<v[k].size();++i)
        dijkstra(v[k][i].nod);
}

int main()
{
    freopen("dijkstra.in","r",stdin);
    freopen("dijkstra.out","w",stdout);



    scanf("%d %d",&n,&m);
    for(int i=1;i<=m;++i)
    {
        int tmp1,tmp2,tmp3;
        scanf("%d %d %d",&tmp1,&tmp2,&tmp3);
        v[tmp1].push_back({tmp2,tmp3});
    }

    for(int i=1;i<=n;++i)
        sol[i]=inf;
    sol[1]=0;

    dijkstra(1);

    for(int i=2;i<=n;++i)
        printf("%d ",sol[i]);

    return 0;
}