Pagini recente » Cod sursa (job #1104601) | Cod sursa (job #2761024) | Cod sursa (job #712601) | Cod sursa (job #1391999) | Cod sursa (job #2565904)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("bellmanford.in");
ofstream fout("bellmanford.out");
int n,m,a,b,c,f[50010],nr[50010],ok,i;
long long d[50010];
vector<pair<int,int> > v[50010];
queue<int> q;
void bellman()
{
int nod;
q.push(1);for(int i=1;i<=n;i++) d[i]=1000000000000000;f[1]=1;d[1]=0;
while(!q.empty())
{
nod=q.front();q.pop();f[nod]=0;nr[nod]++;
if(nr[nod]==n){ok=1;return;}
for(auto it:v[nod])
{
if(d[it.first]>d[nod]+it.second)
{
if(f[it.first]==0) q.push(it.first),f[it.first]=1;
d[it.first]=d[nod]+it.second;
}
}
}
}
int main()
{
fin>>n>>m;
for(i=1;i<=m;i++)
{
fin>>a>>b>>c;
v[a].push_back({b,c});
}
bellman();
if(ok==1) fout<<"Ciclu negativ!";
else for(i=2;i<=n;i++) fout<<d[i]<<" ";
return 0;
}