Pagini recente » Cod sursa (job #518445) | Cod sursa (job #100442) | Cod sursa (job #1894300) | Cod sursa (job #3125461) | Cod sursa (job #2184201)
#include<bits/stdc++.h>
#define x first
#define y second
#define NMAX 50010
using namespace std;
const int inf=1e9;
int n,m;
vector<pair<int,int> >V[NMAX];
int u[NMAX];
queue<pair<int,int> >Q;
int d[NMAX];
int main() {
ifstream cin("bellmanford.in");
ofstream cout("bellmanford.out");
cin>>n>>m;
for (int i=0; i<m; i++) {
int x,y,c; cin>>x>>y>>c; V[x].push_back({y,c});
}
for (int i=2; i<=n; i++) d[i]=inf;
Q.push({1,0});
while (!Q.empty()) {
int x=Q.front().x;
int c=Q.front().y; Q.pop();
if (c>d[x]) continue;
for (int i=0; i<V[x].size(); i++) {
int y=V[x][i].x;
int cy=V[x][i].y;
if (d[y]>d[x]+cy) {
d[y]=d[x]+cy;
Q.push({y,d[y]});
u[y]++;
if (u[y]==n) {
cout<<"Ciclu negativ!"; return 0;
}
}
}
}
for (int i=2; i<=n; i++) cout<<d[i]<<" ";
return 0;
}