Cod sursa(job #1833041)

Utilizator KronSabau Valeriu Kron Data 21 decembrie 2016 15:44:33
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <climits>
#include <queue>
#include <iterator>
#define Nmax 30010
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int n,m,dist[Nmax],x,y;
vector <pair<int,int> > adj[Nmax];

void bfs(int x)
{
    int v,cost;
    dist[x]=0;
    queue<pair<int,int> > q;
    q.push(make_pair(0,x));
    while(!q.empty())
    {
        v=q.front().second;
        cout << v << "\n";
        cost=q.front().first;
        q.pop();
        for(vector<pair<int,int> >::iterator it=adj[v].begin();it!=adj[v].end();it++)
        {
            if(dist[it->second]> it->first + cost)
            {
                dist[it->second]=it->first+cost;
                q.push(make_pair(dist[it->second],it->second));
                if(it->second==y)
                    return;
            }

        }
    }
}

int main()
{
    f >> n >> m >> x >> y;
    int v,w,cost;
    for(int i=1;i<=m;i++)
    {
        f >> v >> w >> cost;
        adj[v].push_back(make_pair(cost,w));
        adj[w].push_back(make_pair(-cost,v));
    }

    for(int i=1;i<=n;i++)
        dist[i]=INT_MAX;

    bfs(x);
    g << dist[y] << "\n";
    return 0;
}