Cod sursa(job #2452088)

Utilizator RadianElevenAdrian Ariotn RadianEleven Data 29 august 2019 15:26:00
Problema Sate Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f ("sate.in");
ofstream g ("sate.out");
vector < pair <int, int> > muchii[100005];
int distanta[100005];
queue <int> q;
int n,m,x,y;

void bfs()
{
    while (!q.empty())
    {
        int nod=q.front();
        q.pop();

        for (unsigned int i=0;i<muchii[nod].size();i++)
        {
            int vecin=muchii[nod].at(i).first;
            if (distanta[vecin]==-1)
            {
                distanta[vecin]=distanta[nod]+muchii[nod].at(i).second;
                q.push(vecin);
                if(vecin==y)
                    return;
            }
        }
    }
}
int main()
{
    f>>n>>m>>x>>y;
    for(int i=1;i<=m;++i)
    {
        int d, sat1, sat2;
        f>>sat1>>sat2>>d;
        muchii[sat1].push_back(make_pair(sat2,d));
        muchii[sat2].push_back(make_pair(sat1,-d));
    }
    for (int i=1;i<=n;i++)
    {
        distanta[i]=-1;
    }
    distanta[x]=0;
    q.push(x);
    bfs();
    g<<distanta[y];
    return 0;
}