Pagini recente » Cod sursa (job #3226494) | Cod sursa (job #2109753) | Cod sursa (job #1455820) | Cod sursa (job #1141106) | Cod sursa (job #998909)
Cod sursa(job #998909)
# include <cstdio>
# define inf 2000000000
# include <queue>
# include <vector>
using namespace std;
int i,n,m,d[50001],x,y,c,v[50003];
queue <int> q;
vector <int> C[250001],G[250001];
int main()
{
freopen("bellmanford.in","r",stdin);
freopen("bellmanford.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=2;i<=n;++i)
d[i]=inf;
for(i=1;i<=m;++i)
{
scanf("%d%d%d",&x,&y,&c);
G[x].push_back(y);
C[x].push_back(c);
}
q.push(1);
while(!q.empty())
{
x=q.front();q.pop();
for(i=0;i<G[x].size();++i)
{
if(d[G[x][i]]>d[x]+C[x][i])
{
d[G[x][i]]=d[x]+C[x][i];
q.push(G[x][i]);
v[G[x][i]]++;
if(v[G[x][i]]>n)
{
printf("Ciclu negativ!");
return 0;
}
}
}
}
for(i=2;i<=n;++i)
printf("%d ",d[i]);
printf("\n");
return 0;
}