Cod sursa(job #403569)
Utilizator | Data | 25 februarie 2010 08:57:07 | |
---|---|---|---|
Problema | Algoritmul Bellman-Ford | Scor | 15 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.51 kb |
#include<fstream.h>
#define u (1<<30)
int d[50100],a[251000],b[251000],c[251000];
int main()
{
int i,m,n,ok,nr=0;
ifstream f("bellmanford.in");
ofstream g("bellmanford.out");
f>>n>>m;
for(i=1;i<=m;i++)
f>>a[i]>>b[i]>>c[i];
for(i=2;i<=n;i++)
d[i]=u;
ok=1;
while(ok&&ok<=n+1)
{
ok=0;
nr++;
for(i=1;i<=m;i++)
if(d[b[i]]>d[a[i]]+c[i])
{
ok=1;
d[b[i]]=d[a[i]]+c[i];
}
}
if(nr==n+1)
g<<"Ciclu negativ";
else
for(i=2;i<=n;i++)
g<<d[i]<<' ';
return 0;
}