Cod sursa(job #3268204)

Utilizator mariusharabariMarius Harabari mariusharabari Data 13 ianuarie 2025 23:23:39
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("sate.in");
ofstream fout("sate.out");

const int NMAX = 30005;

vector <pair <int,int>> a[NMAX];
vector <int> dist(NMAX);
bitset <NMAX> viz;
queue <int> q;
int n, m, x, y, c, s, f;

void bfs(){
    int v;
    while(!q.empty()){
        v=q.front();
        q.pop();
        viz[v]=1;
        for(auto next:a[v]){
            if(!viz[next.first]){
                if(next.first<v){
                    dist[next.first]=dist[v]-next.second;
                    q.push(next.first);
                }
                else{
                    dist[next.first]=dist[v]+next.second;
                    q.push(next.first);
                }

            }
        }
    }
}

int main(){
    fin>>n>>m>>s>>f;
    for(int i=1;i<=m;i++){
        fin>>x>>y>>c;
        a[x].push_back({y,c});
        a[y].push_back({x,c});
    }
    dist[s]=0;
    q.push(s);
    bfs();
    fout<<dist[f];
    return 0;
}