Pagini recente » Cod sursa (job #536743) | Cod sursa (job #2363713) | Cod sursa (job #1998650) | Cod sursa (job #580933) | Cod sursa (job #2965628)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream fin ("bellmanford.in");
ofstream fout ("bellmanford.out");
queue <int> coada;
vector <pair<int,int>> v[50002];
int n,m,l,i,x,y,viz[50002],d[50002],fr[50002];
int main()
{
fin>>n>>m;
for (i=1; i<=m; i++)
{
fin>>x>>y>>l;
v[x].push_back ({y,l});
}
for (i=2; i<=n; i++)
d[i]=1000000000;
d[1]=0;
coada.push (1);
viz[1]=1;
while (!coada.empty ())
{
x=coada.front ();
coada.pop ();
viz[x]=0;
for (i=0; i<v[x].size (); i++)
{
y=v[x][i].first;
if (d[y]>d[x]+v[x][i].second)
{
d[y]=d[x]+v[x][i].second;
if (viz[y]==0)
{
fr[y]++;
if (fr[y]==n)
{
fout<<"Ciclu negativ!";
return 0;
}
coada.push (y);
viz[y]=1;
}
}
}
}
for (i=2; i<=n; i++)
fout<<d[i]<<" ";
return 0;
}