Pagini recente » Cod sursa (job #819449) | Cod sursa (job #817919) | Cod sursa (job #2155034) | Cod sursa (job #2655417) | Cod sursa (job #1508872)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("bellmanford.in");
ofstream fout("bellmanford.out");
int n;
int m;
int a;
int b;
int c;
int ok=1;
int v[100];
int predecessor[100];
int edges[100][100];
int main()
{
fin>>n;
//cin>>n;
fin>>m;
//cin>>m;
for (int i=1;i<=m;i++)
{
fin>>a;
//cin>>a;
fin>>b;
//cin>>b;
fin>>c;
//cin>>c;
edges[a][b]=c;
}
v[1]=0;
for (int i=2;i<=n;i++)
v[i]=500000;
for (int i=1;i<=n-1;i++)
{
for (int j=1;j<=n;j++)
for (int z=1;z<=n;z++)
{
if (edges[j][z]!=0)
{
if (v[j]+edges[j][z]<v[z])
{
v[z]=v[j]+edges[j][z];
predecessor[z]=j;
}
}
}
}
for (int j=1;j<=n;j++)
for (int z=1;z<=n;z++)
{
if (edges[j][z]!=0)
if (v[j]+edges[j][z]<v[z])
{fout<<"Ciclu negativ!"<<endl;
//cout<<"Ciclu negativ!"<<endl;
ok=0;
break;}
}
if (ok==1)
{fout<<"cost minim"<<endl;
//cout<<"cost minim"<<endl;
for (int i=2;i<=n;i++)
fout<<v[i]<<" "<<endl;}
//cout<<v[i]<<" "<<endl;}
return 0;
}