Pagini recente » Cod sursa (job #1794133) | Cod sursa (job #371956) | Cod sursa (job #2845718) | Cod sursa (job #2334797) | Cod sursa (job #695518)
Cod sursa(job #695518)
#include<fstream>
#define DIM 100006
#define INF 99999999
using namespace std;
int S,N,M,K,i,I,B[DIM],D2[DIM],ok,is,ic,C[DIM],D[DIM];
struct nod{
int inf,dist;
nod* adr;
}*A[DIM],*p,*q;
ifstream f("bellmanford.in");
ofstream g("bellmanford.out");
void citire(){
int x,y,d;
f>>N>>M;
for(i=1;i<=M;i++)
{
f>>x>>y>>d;
p=new nod;
p->inf=y;
p->dist=d;
p->adr=A[x];
A[x]=p;
}
}
void belman_ford(){
for(i=2;i<=N;i++)
D[i]=INF;
B[1]=1;
C[1]=1;
ic=is=1;
while (ic<=is)
{
p=A[C[ic]];
B[C[ic]]=0;
for(;p;p=p->adr)
{
if(D[p->inf]>D[C[ic]]+p->dist)
{
D[p->inf]=D[C[ic]]+p->dist;
if(B[p->inf]==0)
{
B[p->inf]=1;
C[++is]=p->inf;
}
}
}
ic++;
}
for(i=1;i<=N;i++)
if(D[i]==INF)
D[i]=0;
}
void afis(){
for(i=2;i<=N;i++)
g<<D[i];
}
int main (){
citire();
belman_ford();
afis();
return 0;
}