Cod sursa(job #3300122)

Utilizator SimifilLavrente Simion Simifil Data 12 iunie 2025 21:37:55
Problema Sate Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <climits>
#include <deque>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");

struct leg{
    int to, dist;
};

int main()
{
    int n, m, start, end;
    f >> n >> m >> start >> end;
    vector<leg> adj[n+1];
    int ans[n+1];
    deque<int> d;
    for( int i = 1; i <= n; ++i )
    {
        ans[i] = INT_MAX;
    }
    for( int i = 1; i <= m; ++i )
    {
        int x, y, dist;
        f >> x >> y >> dist;
        leg a;
        a.to = y;
        a.dist = dist;
        adj[x].push_back(a);
        a.to = x;
        adj[y].push_back(a);
    }
    d.push_front(start);
    ans[start] = 0;
    while( d.empty() == false )
    {
        int parinte = d.back();
        d.pop_back();
        for( auto copil : adj[parinte] )
        {
            int D = copil.dist;
            if( copil.to < parinte )
                D = -D;
            if( ans[copil.to] > ans[parinte] + D )
            {
                ans[copil.to] = ans[parinte] + D;
                d.push_front( copil.to );
            }
        }
    }
    g << ans[end];
	return 0;
}