Cod sursa(job #2472605)

Utilizator tavi255Varzaru Octavian Stefan tavi255 Data 12 octombrie 2019 17:01:20
Problema Sate Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
//#include <iostream>
#include <bits/stdc++.h>
using namespace std;
const int Max=30005;
bool viz[Max];
int dist[Max],n,m,x,y;
vector <pair <int,int> >v[Max];
struct compara
{
    bool operator()(int x,int y)
    {
        return dist[x]>dist[y];
    }
};
priority_queue <int, vector <int>,compara>q;
ifstream in("sate.in");
ofstream out("sate.out");
void citire()
{
    in>>n>>m>>x>>y;
    for(int i=1;i<=m;i++)
    {
        int h,k,q; in>>h>>k>>q;
        v[h].push_back({k,q});
        v[k].push_back({h,q});

    }
}
void bfs(int nod)
{
   q.push(nod); viz[nod]=1;
   while(!q.empty())
   {
      int nod=q.top(); q.pop();
      for(int j=0;j<v[nod].size();j++)
      {
          int vecin=v[nod][j].first;
          int cost=v[nod][j].second;
          if(!viz[vecin])
          {
              viz[vecin]=1; q.push(vecin);
              if(vecin>nod)
                dist[vecin]=dist[nod]+cost;
              else
                dist[vecin]=dist[nod]-cost;
          }
      }
   }
}
int main()
{
   citire();
   bfs(x);
   out<<dist[y];
    return 0;
}