Pagini recente » Cod sursa (job #1872000) | Cod sursa (job #2591960) | Cod sursa (job #2301463) | Cod sursa (job #1351126) | Cod sursa (job #2791478)
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> pi;
const int nmax=2005;
struct noduri{
int nod,cost;
bool operator <(const noduri other) const
{
return cost>other.cost;
}
};
vector<noduri>v[nmax];
int n,m,k,x,y,c,dp[nmax][nmax],dist[nmax][nmax],orase[nmax];
priority_queue<noduri>q;
void read(){
cin>>n>>m>>k;
for(int i=1;i<=k;i++)
{
cin>>orase[i];
}
for(int i=1;i<=m;i++)
{
cin>>x>>y>>c;
v[x].push_back({y,c});
v[y].push_back({x,c});
}
}
void dijkstra(int vama)
{
dist[vama][vama]=0;
q.push({vama,0});
while(!q.empty())
{
int nod=q.top().nod;
int cost=q.top().cost;
for(auto i:v[nod])
if(cost+i.cost<dist[vama][i.nod])
{
dist[vama][i.nod]=cost+i.cost;
q.push({i.nod,cost+i.cost});
}
q.pop();
}
}
void solve(){
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
dist[i][j]=INT_MAX;
dijkstra(1);
if(k==0){
cout<<dist[1][n]<<'\n';
exit(0);
}
else{
}
}
int main(){
read();
solve();
return 0;
}