Pagini recente » Cod sursa (job #2302068) | Cod sursa (job #2257979) | Cod sursa (job #902145) | Cod sursa (job #1710746) | Cod sursa (job #2576041)
#include <bits/stdc++.h>
#define MAX 50100
#define INF 99999999
using namespace std;
ifstream fin("bellmanford.in");
ofstream fout("bellmanford.out");
struct nod{
int x,cost;};
vector<nod>g[MAX];
queue<int>q;
bool bf(int node);
int d[MAX],nr[MAX];
int n,m;
int main()
{
int i,x,y,z;
fin>>n>>m;
for(i=1;i<=m;i++)
{
fin>>x>>y>>z;
g[x].push_back({y,z});
}
if(!bf(1))
fout<<"Ciclu negativ!";
else
{
for(i=2;i<=n;i++)
fout<<d[i]<<' ';
}
return 0;
}
bool bf(int node)
{
int vecin,costt,nodcrt,i;
for(i=0;i<MAX;i++)
d[i]=INF;
q.push(node);
d[node]=0;
while(!q.empty())
{
nodcrt=q.front();
q.pop();
for(i=0;i<g[nodcrt].size();i++)
{
vecin=g[nodcrt][i].x;
costt=g[nodcrt][i].cost;
if(d[vecin]>d[nodcrt]+costt)
{
d[vecin]=d[nodcrt]+costt;
nr[vecin]++;
if(nr[vecin]==n)
return 0;
q.push(vecin);
}
}
}
return 1;
}