Cod sursa(job #2169331)

Utilizator DamianRobertDamian Robert DamianRobert Data 14 martie 2018 14:49:33
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <bits/stdc++.h>
using namespace std;
#define nmax 30004

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

vector <pair <int,int> > l[nmax];
int dist[nmax];
int n, m, x, y;

int bfs()
{
    queue <int> q;
    q.push(x);
    while (!q.empty())
    {
        if(q.front()==y)
            return dist[y];

        for(int i=1; i<=l[q.front()].size(); i++)
        {
            if (!dist[l[q.front()][i].first])
            {
                if (q.front()<l[q.front()][i].first)
                {
                    dist[l[q.front()][i].first]=dist[q.front()]+ l[q.front()][i].second;
                }
                else
                {
                    dist[l[q.front()][i].first]=dist[q.front()]- l[q.front()][i].second;
                }

                q.push(l[q.front()][i].first);
                q.pop();
            }

        }
    }
}

int main()
{
    int a, b, d;
    fin>>n>>m>>x>>y;
    for(int i = 1; i <= m; i++)
    {
        fin>>a>>b>>d;
        l[a].push_back(make_pair(b,d));
        l[b].push_back(make_pair(a,d));
    }
    fout<<bfs();
    return 0;
}