Cod sursa(job #1726407)

Utilizator tanasaradutanasaradu tanasaradu Data 7 iulie 2016 22:12:56
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
vector<pair<int,int> >L[30001];
int d[30005],n,m,X,Y;
queue<int>q;
void Citire()
{
    int i,x,y,dist;
    fin>>n>>m>>X>>Y;
    for(i=1;i<=m;i++)
    {
        fin>>x>>y>>dist;
        L[x].push_back(make_pair(y,dist));
        L[y].push_back(make_pair(x,dist));
    }
}
void Formare()
{
    int i;
    d[X]=0;
    for(i=1;i<=n;i++)
        if(i!=X)d[i]=-1;
}
void Rezolvare()
{
    int i,dist,k,j,s=0;
    q.push(X);
    d[X]=0;
    k=X;
    while(d[Y]==-1)
    {
        for(j=0;j<L[k].size();j++)
        {
            i=L[k][j].first;
            dist=L[k][j].second;
            if(d[i]==-1)
            {
                if(k<i)d[i]=d[k]+dist;
                else d[i]=d[k]-dist;
                q.pop();
                q.push(i);
                k=i;
            }
        }
    }
    fout<<d[Y]<<"\n";
}
int main()
{
    Citire();
    Formare();
    Rezolvare();
    fin.close();
    fout.close();

    return 0;
}