Pagini recente » Cod sursa (job #1610599) | Cod sursa (job #2093286) | Cod sursa (job #3138004) | Cod sursa (job #1292405) | Cod sursa (job #1312453)
#include <fstream>
#include <list>
#define DIM 50001
#define INF 99999
using namespace std;
int n,m,x,y,c,d[DIM];
bool ok;
struct point
{
int x,cost;
};
list<point> nod[DIM];
void bellmanford(int k)
{
for(int i=1;i<=n;++i)
d[i]=INF;
d[k]=0;
for(int i=1;i<=n;++i)
{
ok=0;
for(int j=1;j<=n;++j)
for(list<point>::iterator t=nod[j].begin();t!=nod[j].end();++t)
{
point q=*t;
if(d[j]!=INF && q.x!=k && d[j]+q.cost<d[q.x])
{
d[q.x]=d[j]+q.cost;
ok=1;
}
}
}
}
int main()
{
ifstream f("bellmanford.in");
ofstream g("bellmanford.out");
f>>n>>m;
for(int i=1;i<=m;++i)
{
point q;
f>>x>>y>>q.cost;
q.x=y;
nod[x].push_back(q);
}
bellmanford(1);
if(ok) g<<"Ciclu negativ!\n";
else
for(int i=2;i<=n;++i)
g<<d[i]<<" ";
g<<'\n';
f.close();
g.close();
return 0;
}