Cod sursa(job #1856585)

Utilizator kikiandreiCristian Andrei Popescu kikiandrei Data 25 ianuarie 2017 08:01:48
Problema Algoritmul Bellman-Ford Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>

using namespace std;

ifstream in("bellmanford.in");
ofstream out("bellmanford.out");

int N;
struct edge {int next, cost;};
vector <edge> g[50001];
bool v[50001];
queue <int> Q;
int best[50001];

void citire()
{
    int M;
    in>>N>>M;
    int m1,m2,c;
    edge aux;
    for (int i=1;i<=M;i++)
    {
        in>>m1>>m2>>c;
        aux.next=m2;
        aux.cost=c;
        g[m1].push_back(aux);
        aux.next=m1;
        g[m2].push_back(aux);
    }
}

int main()
{
    citire();
    int S=1;
    Q.push(S);
    best[S]=0;
    v[S]=true;
    while (!Q.empty())
    {
        int node=Q.front();
        v[node]=false;
        Q.pop();
        for (auto it=1;it<g[node].size();it++)
        {
            if(best[it.next]>best[node]+it.cost)
            {
                best it.next=best[node]+it.cost;
            }
            if (in[it.next]==false)
            {
                Q.push(it.next);
            }
        }
    }
    for (int i=2;i<=N) out<<best[i]<<" ";
    return 0;
}