Cod sursa(job #2791478)

Utilizator alex1033Alex Putineanu alex1033 Data 30 octombrie 2021 15:49:33
Problema Arbore partial de cost minim Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#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;
}