Pagini recente » Cod sursa (job #2404449) | Cod sursa (job #2230540) | Cod sursa (job #363549) | Cod sursa (job #2048724) | Cod sursa (job #1580138)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#define INF 0x3f3f3f3f
using namespace std;
ifstream in("ubuntzei.in");
ofstream out("ubuntzei.out");
int n, m, k, i, p, x, y, dist[2005], Min=INF,c;
vector <int> g[2005], cost[2005];
queue <int> Q;
int main()
{
in>>n>>m;
in>>k;
for(i=1;i<=k;i++)
{
in>>p;
Q.push(p);
}
for(i=1;i<=n;i++)
{
in>>x>>y>>c;
g[x].push_back(y);
g[y].push_back(x);
cost[x].push_back(c);
cost[y].push_back(c);
}
for(i=2;i<=n;i++)
{
dist[i]=INF;
}
Q.push(1);
while(!Q.empty())
{
x=Q.front();
for(i=0; i<g[x].size(); ++i)
if(dist[g[x][i]] > dist[x] + cost[x][i])
{
dist[g[x][i]] = dist[x] + cost[x][i];
Q.push(g[x][i]);
}
Q.pop();
}
out<<dist[n];
return 0;
}