Pagini recente » Cod sursa (job #1521120) | Cod sursa (job #2937848) | Cod sursa (job #939312) | Cod sursa (job #2978857) | Cod sursa (job #2126966)
#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;
}