Cod sursa(job #1846153)

Utilizator VladAfrasineiAfrasinei VladAfrasinei Data 12 ianuarie 2017 11:47:27
Problema Algoritmul lui Dijkstra Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <cstdio>
#include<vector>
#include <queue>

using namespace std;
int n,m,i,d[50005],x,c;
struct nod{int nd,val;}p;
vector <nod>v[50005];
queue<int>C;

int main()
{
    freopen("dijkstra.in","r",stdin);
    freopen("dijkstra.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=m;i++)
    { scanf("%d%d%d",&x,&p.nd,&p.val);
        v[x].push_back(p);
    }
    C.push(1);
    for(i=1;i<=n;i++)
        d[i]=2000000000;
    d[1]=0;
    while(!C.empty())
    { c=C.front();
        C.pop();
        x=v[c].size();
        for(i=0;i<x;i++)
        {if(v[c][i].val+d[c]<d[v[c][i].nd]) {  d[v[c][i].nd]=d[c]+v[c][i].val;
         C.push(v[c][i].nd);

        }

        }
    }
    for(i=2;i<=n;i++)
        if(d[i]==2000000000) printf("0 ");
        else printf("%d ",d[i]);
    return 0;
}