Pagini recente » Cod sursa (job #1059081) | Cod sursa (job #2926203) | Cod sursa (job #1359623) | Cod sursa (job #1457605) | Cod sursa (job #606376)
Cod sursa(job #606376)
#include<fstream.h>
#define N 50001
typedef struct nod
{long co,in;
nod *urm;}Nod;
Nod *g[N],*r;
long m,k,d[N],c,n,i,j,p,t,l,q[50*N],u;
void push(Nod *&r,long x,long c)
{Nod *p=new Nod;
p->in=x,p->co=c,p->urm=r,r=p;}
int main()
{p=u=0;
ifstream f("bellmanford.in");
ofstream h("bellmanford.out");
f>>n>>m;
for(i=1;i<=n;i++)
d[i]=N,g[i]=NULL;
while(m--)
f>>l>>j>>c,push(g[l],j,c);
d[1]=0,q[u++]=1;
while(p<u)
{t=q[p++];
for(r=g[t];r;r=r->urm)
if(d[r->in]>d[t]+r->co)
d[r->in]=d[t]+r->co,q[u++]=r->in;
else
if((d[r->in]>0&&d[t]<0)||d[r->in]<0)
{h<<"Ciclu negativ!";
return 0;}}
for(i=2;i<=n;i++)
if(d[i]>0)
h<<(d[i]%N)<<" ";
else
h<<d[i]<<" ";
return 0;}