Cod sursa(job #3371354)

Utilizator darius_cimbruDarius Cimbru darius_cimbru Data 29 octombrie 2026 21:16:01
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

ifstream f("sate.in");
ofstream g("sate.out");

vector<pair<int,int>> sate[30001];
int poz[30001]; // poz[a]=b inseamna ca satul 'a' e la b km de X
bool vizitat[30001]; //vizitat sau nu

void dfs(int s)
{
    for (int k = 0; k < sate[s].size(); k++)
    {
        int vecin = sate[s][k].first; //sate[s][k] = satul s, perechea k
        int km = sate[s][k].second;
        if (vizitat[vecin])
            continue;
        else{
            poz[vecin]=poz[s]+km;
            vizitat[vecin]=1;
            dfs(vecin);
        }
    }
}

int main(){
    int n,m,x,y; //n sate, m relatii, x si y distanta cautata
    f>>n>>m>>x>>y;
    for (int it=1;it<=m;it++)
    {
        int i,j,d;
        f>>i>>j>>d; // distanta dintre i si j are 'd' km
        sate[i].push_back({j, d});
        sate[j].push_back({i, -d});
    }
    poz[x]=0; //totul e relativ la x
    vizitat[x]=1;
    dfs(x);
    g<<poz[y];
    f.close();
    g.close();
}