Cod sursa(job #2981103)

Utilizator Darius1414Dobre Darius Adrian Darius1414 Data 17 februarie 2023 11:20:52
Problema Sate Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define nmx 100025
using namespace std;
int n,m,a,b,x,y,pr,dist[nmx];
struct edge
{
    int nex;
    int price;
};
vector <edge> neighbours[nmx];
void dfs (int source)
{
    int sz=neighbours[source].size();
    for (int i=0; i<sz; i++)
    {
        if (dist[neighbours[source][i].nex]==0)
        {
            if (neighbours[source][i].nex<source)
                dist[neighbours[source][i].nex]=dist[source]-neighbours[source][i].price;
            else
                dist[neighbours[source][i].nex]=dist[source]+neighbours[source][i].price;
            dfs(neighbours[source][i].nex);
        }
    }
}
int main()
{
    ifstream f ("sate.in");
    ofstream g ("sate.out");
    f>>n>>m>>x>>y;
    for (int i=1; i<=n; i++)
    {
        f>>a>>b>>pr;
        neighbours[a].push_back({b,pr});
        neighbours[b].push_back({a,pr});
    }
    dist[x]=1;
    dfs(x);
    g<<dist[y]-1;
}