Cod sursa(job #3373948)

Utilizator EmimaCurcan Sara Emima Emima Data 8 noiembrie 2026 12:18:05
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<algorithm>
#include<map>
#include <cmath>

using namespace std;

int tata[30001];
int dist[30001];

int radacina(int i) {
    if (tata[i]==i)
        return i;
    int r = radacina(tata[i]);
    dist[i]+=dist[tata[i]];
    tata[i]=r;
    return r;
}

void unesteSate(int i, int j, int d) {
    int root_i=radacina(i);
    int root_j=radacina(j);
    if (root_i !=root_j) {
        tata[root_i]=root_j;
        dist[root_i]=dist[j]-dist[i]+d;
    }
}

int main() {

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

    int n,m,x,y;
    f>>n>>m>>x>>y;
    for (int i=1;i<=n;++i) {
        tata[i]=i;
        dist[i]=0;
    }

    for (int i=0;i<=m;++i) {
        int u,v,d;
        f>>u>>v>>d;
        unesteSate(u,v,d);
    }
    radacina(x);
    radacina(y);
    g<<abs(dist[x]-dist[y])<<endl;

    f.close();
    g.close();
    return 0;

}