Pagini recente » Cod sursa (job #3145446) | Cod sursa (job #196084) | Cod sursa (job #1178715) | Cod sursa (job #2398694) | Cod sursa (job #1923238)
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> ii;
const int INF = 1e9;
int n,m,d[50005],u,v,w;
bool neg;
int main()
{
freopen("bellmanford.in","r",stdin);
freopen("bellmanford.out","w",stdout);
scanf("%d%d",&n,&m); neg = false;
vector<vector<ii> > a(n+1);
for (int i = 0; i<m; ++i)
{
scanf("%d%d%d",&u,&v,&w);
a[u].push_back(ii(v,w));
}
for (int i = 1; i<=n; ++i)
{
d[i] = INF;
}
d[1] = 0;
for (int i = 0; i<n; ++i)
{
for (int v = 1; v<=n; ++v)
{
for (int j = 0; j<(int)a[v].size(); ++j)
{
ii k = a[v][j];
if (d[v] + k.second < d[k.first])
{
if (i == n-1) neg = true;
d[k.first] = d[v] + k.second;
}
}
}
}
if (neg) printf("Ciclu negativ!");
else
for (int i = 2; i<=n; ++i)
{
printf("%d ",d[i]);
}
}