Pagini recente » Cod sursa (job #2027925) | Cod sursa (job #2686842) | Cod sursa (job #677780) | infoarena - comunitate informatica, concursuri de programare | Cod sursa (job #2196140)
#include <bits/stdc++.h>
#define INF 1e9
using namespace std;
struct muchie
{
int first,second,lenght;
};
vector<muchie>muc;
int mn[50005];
int n,m,pos1,pos2,l;
int main()
{
freopen("bellmanford.in","r",stdin);
freopen("bellmanford.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&pos1,&pos2,&l);
muc.push_back({pos1,pos2,l});
}
for(int i=2;i<=n;i++)
mn[i]=INF;
mn[1]=0;
int i;
for(i=1;i<=n-1;i++)
{
bool k=0;
for(int j=0;j<m;j++)
{
if(mn[muc[j].second]<=mn[muc[j].first]+muc[j].lenght)
continue;
k=1;
mn[muc[j].second]=mn[muc[j].first]+muc[j].lenght;
}
if(k==0)
break;
}
bool k=0;
if(i==n)
{
for(int j=0;j<m;j++)
{
if(mn[muc[j].second]<=mn[muc[j].first]+muc[j].lenght)
continue;
k=1;
mn[muc[j].second]=mn[muc[j].first]+muc[j].lenght;
}
if(k==1)
{
printf("Ciclu negativ!");
return 0;
}
}
for(int i=2;i<=n;i++)
printf("%d ",mn[i]);
return 0;
}