Cod sursa(job #2981086)

Utilizator Darius1414Dobre Darius Adrian Darius1414 Data 17 februarie 2023 10:54:40
Problema Sate Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
int n,m,a,b,x,y,pr,dist[100100];
struct edge
{
    int dist;
    int price;
};
vector <edge> neighbours[30005];
void bfs (int source)
{
    queue <edge> myq;
    myq.push({source,0});
    dist[source]=0;
    while (!myq.empty())
    {
        edge u=myq.front();
        myq.pop();
        for (auto it : neighbours[u.dist])
            if (dist[it.dist]==-30000000)
            {
                dist[it.dist]=it.price+dist[u.dist];
                myq.push(it);
            }
    }
}
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});
    }
    for (int i=1; i<=n      ; i++)
        dist[i]=-30000000;
    bfs(x);
    g<<dist[y];
}