Cod sursa(job #1402491)

Utilizator diana-t95FMI Tudoreanu Diana Elena diana-t95 Data 26 martie 2015 17:01:14
Problema Algoritmul Bellman-Ford Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
#define maxn 50001
#define maxm 250001
#define infinit 10000000
int n, m;
vector< pair<int, int> > g[maxn];
queue<int> q;
int d[maxn], viz[maxn];
void bellmanford(int s)
{
    int i, nod;
    for (i = 1; i <= n; i++)
        d[i] = infinit;
    d[s] = 0;
    q.push(s);
    while(!q.empty())
    {
        nod = q.front();
        q.pop();
        viz[nod] = 0;
        for (i = 0; i < g[nod].size(); i++)
            if (d[g[nod][i].first] > d[nod] + g[nod][i].second)
            {
                d[g[nod][i].first] = d[nod] + g[nod][i].second;
                if (!viz[g[nod][i].first])
                {
                    q.push(g[nod][i].first);
                    viz[g[nod][i].first] = 1;
                }
            }
    }

}
int main()
{
    ifstream f("bellmanford.in");
    ofstream ff("bellmanford.out");
    f>>n>>m;
    int a, b, c, i;
    for (i = 0; i < m; i++)
    {
        f>>a>>b>>c;
        g[a].push_back(make_pair(b, c));
    }
    bellmanford(1);
    for (i = 2; i <= n; i++)
        ff<<d[i]<<' ';
}