Cod sursa(job #2126966)

Utilizator VladG26Ene Vlad-Mihai VladG26 Data 10 februarie 2018 10:58:56
Problema Ubuntzei Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
int dp[20][1<<15],mCost[2005][2005],k,m,n,vPrieteni[20];
int vDist[2005],vDist1[2005];
priority_queue <pair<int,int> > q;
vector <pair<int,int> > G[2005];
void citire()
{
    scanf("%d%d%d",&n,&m,&k);
    for(int i=1;i<=k;i++)
        scanf("%d",&vPrieteni[i]);
    int nod1,nod2,cost;
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d%d",&nod1,&nod2,&cost);
        G[nod1].push_back(make_pair(nod2,cost));
        G[nod2].push_back(make_pair(nod1,cost));
    }
}
void dij(int nod)
{
    for(int i=1;i<=n;i++)
        {
            vDist[i]=0x3f3f3f3f;
        }
    vDist[nod]=0;
    q.push(make_pair(0,nod));
    while(!q.empty())
    {
        int dist=-q.top().first;
        int nodCurent=q.top().second;
        q.pop();
        for(auto it:G[nodCurent])
        {
            if(vDist[it.first]>vDist[nodCurent]+it.second)
            {
                vDist[it.first]=vDist[nodCurent]+it.second;
                q.push(make_pair(-it.second,it.first));
            }
        }
    }
}
int main()
{
    freopen("ubuntzei.in","r",stdin);
    freopen("ubuntzei.out","w",stdout);
    citire();
    dij(1);
    printf("%d",vDist[n]);
    return 0;
}