Cod sursa(job #3372717)

Utilizator stefania.oncOancea Stefania-Valentina stefania.onc Data 4 noiembrie 2026 19:27:53
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.28 kb
#include<iostream>
using namespace std;
#include<vector>
#include<tuple>
#include<fstream>
#include<list>
#include<queue>
ifstream fin("sate.in");
ofstream fout("sate.out");

int N,M,X,Y;
vector<list<tuple<int,int>>> graf;
vector<int> cost;
vector<int> gasit;
queue<int> q;


int main()
{
    fin>>N>>M>>X>>Y;
    
    q.push(X);
    graf.resize(N+5);
    cost.resize(N+5);
    gasit.resize(N+5);
gasit[X]=1;
    for(int i=0;i<N;i++)
    {
        if(i+1!=X)
            cost[i+1]=1e9;
    }
    for(int a=0;a<M;a++)
    {
        int i,j,D;
        fin>>i>>j>>D;
        graf[i].push_back(make_tuple(j,D));
        graf[j].push_back(make_tuple(i,-D));
    }

    while(!q.empty())
    {
        int nod=q.front();
        q.pop();
        for(auto b:graf[nod])
        {
            
            int j=get<0>(b);
            int c=get<1>(b);
            int acc;
            
            if(gasit[j]==0)
           { acc=cost[nod]+c;

            
                cost[j]=acc;
                gasit[j]=1;
                
                if(j==Y) 
                { 
                    fout<<cost[j]; 
                    return 0; 
                }

            q.push(j);
            
            }
        }
    }


    return 0;
}