Pagini recente » Cod sursa (job #677936) | Cod sursa (job #757065) | Cod sursa (job #1454193) | Cod sursa (job #2424742) | Cod sursa (job #2856732)
#include<bits/stdc++.h>
#define cin fin
#define cout fout
#define Nmax 50008
#define oo 1<<30
using namespace std;
ifstream cin("bellmanford.in");
ofstream cout("bellmanford.out");
int n,m,x;
int cmin[Nmax],nr[Nmax];
vector<pair <int,int> >G[Nmax];
queue<int> Coada;
void Citeste()
{
int x,y,c;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>x>>y>>c;
G[x].push_back(make_pair(y,c));
}
}
bool Bellman(int nodStart)
{
for(int i=1;i<=n;i++)
cmin[i]=oo;
cmin[nodStart]=0;
Coada.push(nodStart);
nr[nodStart]=1;
while(!Coada.empty())
{
x=Coada.front();
Coada.pop();
///parcurg lista de adiacenta a lui x
for(auto i:G[x])
{
int vf=i.first;
int cost=i.second;
if(cmin[vf]>cmin[x]+cost)
{
cmin[vf]=cmin[x]+cost;
Coada.push(vf);
nr[vf]++;
if(nr[vf]==n)
return 0;
}
}
}
}
void Afiseaza()
{
for(int i=2;i<=n;i++)
{
cout<<cmin[i]<<" ";
}
}
int main()
{
Citeste();
Bellman(1);
Afiseaza();
}