Cod sursa(job #2062436)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 10 noiembrie 2017 13:35:40
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <bits/stdc++.h>
#define Nmax 30001
#define ll long long
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
queue <int> q;
ll d[Nmax];
int n,m,X,Y;
bitset <Nmax> inq;
list <pair <int,ll> > G[Nmax];
void BF()
{
    int x;
    list <pair <int,ll> > :: iterator it;
    fill(d+1,d+n+1,LONG_LONG_MAX);
    d[X]=0;
    q.push(X);
    while(!q.empty())
    {
        x=q.front();
        q.pop();
        inq[x]=false;
        for(it=G[x].begin();it!=G[x].end();++it)
            if(d[it->first]>d[x]+it->second)
            {
                d[it->first]=d[x]+it->second;
                if(!inq[it->first])
                {
                    inq[it->first]=true;
                    q.push({it->first});
                }
            }
    }
}
int main()
{
    f>>n>>m>>X>>Y;
    int i,x,y,k;
    for(i=1;i<=m;i++)
    {
        f>>x>>y>>k;
        G[x].push_back({y,k});
        G[y].push_back({x,-k});
    }
    BF();
    g<<d[Y];

    return 0;
}