Cod sursa(job #2524905)

Utilizator MichaelXcXCiuciulete Mihai MichaelXcX Data 16 ianuarie 2020 16:11:31
Problema Sate Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 100005;

struct Edge {
    int node;
    int cost;
};

Edge aux;
vector <Edge> G[NMAX];
queue < int > Q;

long long visited[NMAX];
int N, M, X, Y;
int x, y, c;

void BFS(int node, int finish)
{
    Q.push(node);
    Edge aux;
    visited[node] = 0;

    while(!Q.empty()) {
        node = Q.front();
        Q.pop();
        for(size_t i = 0; i < G[node].size(); ++i) {
            aux = G[node][i];
            if(visited[aux.node] == -1) {
                visited[aux.node] = visited[node] + aux.cost;
                if(aux.node == finish) {
                    fout << visited[aux.node]<< "\n";
                    return;
                }
                Q.push(aux.node);
            }
        }
    }
}

int main()
{
    ios_base::sync_with_stdio(false);
    fin.tie(NULL);

    fin >> N >> M >> X >> Y;
    memset(visited, -1, sizeof(visited));
    for(int i = 0; i < M; i++) {
        fin >> x >> y >> c;
        aux.node = y;
        aux.cost = c;
        G[x].push_back(aux);
        aux.node = x;
        aux.cost = -c;
        G[y].push_back(aux);
    }
    BFS(X, Y);
}