Pagini recente » Cod sursa (job #499682) | Cod sursa (job #793295) | Cod sursa (job #3191212) | Cod sursa (job #2530684) | Cod sursa (job #1706408)
#include <cstdio>
#include <vector>
#include <queue>
#define INF 0x3f3f3f
#define DIM 50005
#define pb push_back
using namespace std;
struct data{
int di, co;
};
int dist[DIM];
int frcv[DIM];
int in_queue[DIM];
queue < int > Q;
vector < data > v[DIM];
int main()
{
freopen("bellmanford.in","r",stdin);
freopen("bellmanford.out","w",stdout);
int n, m, i, j, x, y, c, s, t, d, k;
scanf("%d%d",&n,&m);
for( i = 1; i <= m; ++i ){
scanf("%d%d%d",&x,&y,&c);
v[x].pb({y,c});
}
for( i = 2; i <= n; ++i ) dist[i] = INF;
Q.push(1);
frcv[1] = 1;
in_queue[1] = true;
while( !Q.empty() ){
x = Q.front();
frcv[x]++;
if( frcv[x] == n - 1 ){
printf("Ciclu negativ!\n");
return 0;
}
for( i = 0; i < v[x].size(); ++i ){
if( dist[v[x][i].di] > dist[x] + v[x][i].co ){
dist[v[x][i].di] = dist[x] + v[x][i].co;
if( !in_queue[v[x][i].di] ){
in_queue[v[x][i].di] = true;
Q.push(v[x][i].di);
}
}
}
in_queue[x] = false;
Q.pop();
}
for( i = 2; i <= n; ++i ){
printf("%d ",dist[i]);
}
return 0;
}