Cod sursa(job #1237666)

Utilizator andreimdvMoldovan Andrei andreimdv Data 4 octombrie 2014 16:29:49
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>
#include<list>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;

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

vector<pair<int,int> >l[30003];
vector<pair<int,int> >::iterator it;
queue<int> q;

int n,m,X,Y,i,a,b,c;
int aux,aux2,d[30005];

int main()
{
    fin>>n>>m>>X>>Y; aux=max(X,Y); aux2=min(X,Y); X=aux2; Y=aux;
    for(i=1;i<=m;++i)
    {
        fin>>a>>b>>c;
            l[a].push_back(make_pair(b,c));
            l[b].push_back(make_pair(a,-c));
    }
    q.push(X);
    while(!q.empty())
    {
        aux=q.front();
        q.pop();
        for(it=l[aux].begin(); it!=l[aux].end();++it)
        {
            if(abs(d[aux]+it->second)>abs(d[it->first]))
            {
                d[it->first]=d[aux]+it->second;
                q.push(it->first);
            }
        }
    }
    fout<<d[Y];
return 0;
    }