Pagini recente » Cod sursa (job #1795954) | Cod sursa (job #933860) | Cod sursa (job #1905158) | Cod sursa (job #1645526) | Cod sursa (job #1920635)
#include <fstream>
#include <list>
#include <queue>
#define cs pair<int,int>
#define y second
#define x first
using namespace std;
ifstream cin("bellmanford.in");
ofstream cout("bellmanford.out");
int n,m,a,b,c,cu,d[50001],ve[50001];
list<cs> Gf[50001];
list<cs> ::iterator it;
queue<int>Q;
int main()
{
cin>>n>>m;
for(int i=1;i<=m;++i)
{
cin>>a>>b>>c;
Gf[a].push_back(make_pair(b,c));
}
for(int i=2;i<=n;++i)
d[i]=1<<30;
Q.push(1);
while(!Q.empty())
{
cu=Q.front();
for(it=Gf[cu].begin();it!=Gf[cu].end();++it)
if(d[it->x]>d[cu]+it->y)
{
d[it->x]=d[cu]+it->y;
Q.push(it->x);
++ve[it->x];
if(ve[it->x]>=n)
{
cout<<"Ciclu negativ!\n";
return 0;
}
}
Q.pop();
}
for(int i=2;i<=n;++i)
cout<<d[i]<<' ';
return 0;
}