Cod sursa(job #3257185)

Utilizator Raul_AArdelean Raul Raul_A Data 16 noiembrie 2024 21:00:10
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define eb emplace_back
#define pii pair<int, int>
#define tpl tuple<int, int, int>
#define quad tuple<int, int, int, int>
#define OO LLONG_MAX / 2
#define oo INT_MAX/2
using namespace std;

const string fn("sate");

ifstream in(fn + ".in");
ofstream out(fn + ".out");

#define cin in
#define cout out

const int MAX = 3e4;

int n,m,src,dst;
int cost[MAX+5];
vector<pii> g[MAX+5];

void solve()
{
    cin>>n>>m>>src>>dst;

    fill(cost,cost+n+1,oo);

    for(int i=1,x,y,w;i<=m;i++)
    {
        cin>>x>>y>>w;
        g[y].eb(x,-w);
        g[x].eb(y,w);
    }

    queue<int> que;
    que.emplace(src);
    cost[src]=0;

    while(!que.empty())
    {
        int node=que.front();
        que.pop();

        for(auto x: g[node])
            if(cost[x.first]>cost[node]+x.second)
                cost[x.first]=cost[node]+x.second,que.emplace(x.first);
    }

    cout<<cost[dst];
}

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int q = 1;

    // cin>>q;

    while (q--)
        solve();
    exit(0);
}