Pagini recente » Cod sursa (job #2757727) | Cod sursa (job #1722000) | Cod sursa (job #615009) | Cod sursa (job #734795) | Cod sursa (job #2929235)
#include <bits/stdc++.h>
using namespace std;
ifstream in("bellmanford.in");
ofstream out("bellmanford.out");
const int N=5e4+5;
const int INF=INT_MAX;
#define pp pair<int,int>
vector<pp> la[N];
int frecv[N],dist[N];
bool bford(int start, int n)
{
for(int i=1;i<=n;i++) dist[i]=INF;
dist[start]=0;
queue<int> q;
q.push(start);
while(!q.empty())
{
int nod=q.front();
q.pop();
if(++frecv[nod] == n) return 0;
for(int i=0;i<la[nod].size();i++)
{
pp vecin = la[nod][i];
if(dist[nod] + vecin.second < dist[vecin.first])
{
dist[vecin.first] = dist[nod] + vecin.second;
q.push(vecin.first);
}
}
}
return 1;
}
int main()
{
int n,m; in>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y,c; in>>x>>y>>c;
la[x].push_back({y,c});
}
if(!bford(1,n)) out<<"Ciclu negativ!";
else
{
for(int i=2;i<=n;i++)
out<<dist[i]<<' ';
}
}