Pagini recente » Cod sursa (job #1885018) | Cod sursa (job #2406846) | Cod sursa (job #196759) | Cod sursa (job #1890130) | Cod sursa (job #678666)
Cod sursa(job #678666)
#include<fstream>
#define INF 99999999
using namespace std;
ofstream out("bellmanford.out");
int a[1500][1500],d[1500],T[1500],n,m;
void read();
int ford(int start);
void drum(int x);
int main()
{
read();
ford(1);
return 0;
}
void read()
{
ifstream in("bellmanford.in");
in>>n>>m;
int x,y,c;
for(;m;m--)
{
in>>x>>y>>c;
a[x][y]=c;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(a[i][j]==0&&i!=j)
a[i][j]=INF;
}
int ford(int start)
{
int ok,i,j,k;
for(i=1;i<=n;i++)
{
d[i]=INF;
T[i]=-1;
}
d[start]=0;
for(i=1;i<=n;i++)
{
ok=0;
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
if(d[j]!=INF&&a[j][k]!=INF)
if(d[k]>d[j]+a[j][k])
{
d[k]=d[j]+a[j][k];
T[k]=j;
ok=1;
}
}
if(ok)
out<<"Ciclu negativ!";
else
{
for(int i=2;i<=n;i++)
out<<d[i]<<" ";
}
return 0;
}