Cod sursa(job #3184927)

Utilizator Robert_MitriRobert Mitri Robert_Mitri Data 17 decembrie 2023 13:33:46
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <queue>
#include <vector>
#define sz 30000
#define INF 0x3FFFFFFF
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");

int n,m,x,y;

vector <pair<int,int>> v[sz + 5];
int d[sz + 5];

struct mch{
int nod;
int cost;

bool operator < (mch b) const
{
    return cost > b.cost;
}

};

priority_queue <mch> q;

int main( )
{
    fin>>n>>m>>x>>y;
    for(int i=1;i<=n;i++)
        d[i]=INF;
    for(int i=1;i<=m;i++)
    {
        int x,y,z;
        fin>>x>>y>>z;
        v[x].push_back({z,y});
        v[y].push_back({-z,x});
    }
    d[x]=0;
    q.push({x,0});
    while(!q.empty())
    {
        mch fr = q.top();
        q.pop();
        if(fr.cost!=d[fr.nod])
            continue;
        for(auto& i : v[fr.nod])
        {
            int vec = i.second;
            int cost = i.first;
            if(fr.cost + cost < d[vec])
            d[vec]=fr.cost + cost,q.push({vec,d[vec]});
        }
    }
    fout<<d[y];
}