Cod sursa(job #906451)

Utilizator alin_iliciAlin Ilici alin_ilici Data 6 martie 2013 20:41:32
Problema Algoritmul Bellman-Ford Scor 15
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
#define inf 1000000000
#define maxn 50005

vector <int> muchii[maxn],cost[maxn];
int dist[maxn];
int nr_noduri,nr_muchii;

void bellman_ford (int start)
{
    int dist[nr_noduri+1],i,j,k;
    ofstream g("bellmanford.out");
    for (i=1;i<=nr_noduri;i++)
        if (i==start)
        {
            dist[i]=0;
        }
        else
        {
            dist[i]=inf;
        }
    k=0;
    while (k<nr_noduri)
    {
        for (i=1;i<=nr_noduri;i++)
        for (j=0;j<muchii[i].size();j++)
        {
            if (dist[i]+cost[i][j]<dist[muchii[i][j]])
            {
                dist[muchii[i][j]]=dist[i]+cost[i][j];
            }
        }
        k=k+1;
    }
    for (i=2;i<=nr_noduri;i++)
        g<<dist[i]<<" ";
    g.close();
}

int main()
{
    int i,a,b,c;
    ifstream f("bellmanford.in");
    f>>nr_noduri>>nr_muchii;
    for (i=1;i<=nr_muchii;i++)
    {
        f>>a>>b>>c;
        muchii[a].push_back(b);
        cost[a].push_back(c);
    }
    bellman_ford(1);
    f.close();
    return 0;
}