Cod sursa(job #2465673)

Utilizator mionelIon. M mionel Data 30 septembrie 2019 18:11:12
Problema Sate Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");

vector <pair<int, int> >a[30001];
queue<int>q;
int n,m,x,y,d[30001],viz[30001];

void citire()
{
    f>>n>>m>>x>>y;
    int i,j,c;
    for(int k=1;k<=m;k++)
    {
        f>>i>>j>>c;
        a[i].push_back({j,c});
        a[j].push_back({i,c});
    }
}
void bfs(int start)
{ int p,v, c;

    q.push(start);
    viz[start]=1;
    while(!q.empty())
    {
        p=q.front();q.pop();
        for(int j=0;j<a[p].size();j++)
		{
		    v=a[p][j].first;
		    c=a[p][j].second;
		    if(viz[v]==0)
            {
                q.push(v);
                viz[v]=1;
                if(p>v)
                    d[v]=d[p]-c;
                else
                    d[v]=d[p]+c;
                if(v==y)
                    return;
            }
        }
    }
}
int main()
{
    citire();
    bfs(x);
    g<<d[y];
    return 0;
}