Pagini recente » Cod sursa (job #2390636) | Cod sursa (job #3170592) | Cod sursa (job #1190163) | Cod sursa (job #1354442) | Cod sursa (job #913816)
Cod sursa(job #913816)
#include<cstdio>
#include<algorithm>
#include<vector>
#include<deque>
#define inf 2000000000
using namespace std;
int m,n,i,j,k,cost[50005],viz[50005],x,y,a,b;
vector<pair<int,int> >v[50005];
deque<int>c;
int main()
{
freopen("bellmanford.in","r",stdin);
freopen("bellmanford.out","w",stdout);
scanf("%d %d",&n,&m);
for (i=1;i<=m;i++) scanf("%d %d %d",&x,&y,&k),v[x].push_back(make_pair(y,k));
c.push_back(1);
fill(cost+2,cost+n+1,inf);
while (!c.empty())
{
x=c.front();
for (j=0;j<v[x].size();j++)
{
a=v[x][j].first;
b=v[x][j].second;
if (cost[a]>cost[x]+b)
{
cost[a]=cost[x]+b;
c.push_back(a);
viz[a]++;
if (viz[a]==n-1)
{
printf("Ciclu negativ!\n");
return 0;
}
}
}
c.pop_front();
}
for (i=2;i<=n;i++) printf("%d ",cost[i]);
return 0;
}