Pagini recente » Cod sursa (job #2019751) | Diferente pentru home intre reviziile 849 si 850 | Cod sursa (job #683645) | Cod sursa (job #2783253) | Cod sursa (job #1297553)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("bellmanford.in");
ofstream cout("bellmanford.out");
typedef struct ls
{
int info, drum;
ls *next;
}*nod;
int c, y, u, i, j, x, n, m, sol[10005];
nod a[10005];
int viz[10005];
void ad(int x, nod &y, int c)
{
nod p=new ls;
p->info=x;
p->drum=c;
p->next=y;
y=p;
}
int main()
{
cin>>n>>m;
for (i=1; i<=m; ++i)
{
cin>>x>>y>>c;
ad(y, a[x], c);
}
for (i=2; i<=n; ++i) sol[i]=20000;
u=0;
for (j=1; j<=m; ++j)
for(i=1; i<=n; ++i)
{
for (nod p=a[i]; p; p=p->next)
if (sol[i]+p->drum < sol[p->info])
{
sol[p->info]=sol[i]+p->drum;
++viz[p->info];
if (viz[p->info]==n) u=1;
}
}
if (u) cout<<"Ciclu negativ!\n";
else
for (i=2; i<=n; ++i) cout<<sol[i]<<' ';
return 0;
}