Cod sursa(job #1303261)

Utilizator bogdanboboc97Bogdan Boboc bogdanboboc97 Data 27 decembrie 2014 19:59:06
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");
vector< vector< pair<int,int> > > a;
vector<int> d;
vector<bool> use;
queue<int> q;
void bfs(int x)
{
    d[x]=0;
    q.push(x);
    while(!q.empty())
    {
        int k=q.front();q.pop();
        for(vector< pair<int,int> >::iterator i=a[k].begin();i!=a[k].end();i++)
        if(d[i->first]==numeric_limits<int>::max())
        {
            if(i->first > k)d[i->first]=d[k]+i->second;
            else d[i->first]=d[k]-i->second;
            q.push(i->first);
        }
    }
}
int main()
{
    int n,m,p,q,x,y,c;
    in>>n>>m>>p>>q;
    if(p>q)swap(p,q);
    a=vector< vector< pair<int,int> > >(n+1);
    d=vector<int>(n+1,numeric_limits<int>::max());
    for(;m;m--)
    {
        in>>x>>y>>c;
        a[x].push_back(make_pair(y,c));
        a[y].push_back(make_pair(x,c));
    }
    bfs(p);
    out<<d[q];
    return 0;
}