Pagini recente » Cod sursa (job #2199727) | Cod sursa (job #1814045) | Cod sursa (job #2176048) | Cod sursa (job #2903399) | Cod sursa (job #1878462)
#include <iostream>
#include <fstream>
#include <vector>
#define MAXX 2000
using namespace std;
ifstream f("bellmanford.in");
ofstream g("bellmanford.out");
vector <pair <int, int> > G[50010];
int n,m,d[50010];
int bellman_ford(int x0)
{
for(int i=1;i<=n;i++)
d[i]=MAXX;
d[x0]=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
int l=G[j].size();
for(int k=0;k<l;k++)
if(d[G[j][k].first]>d[j]+G[j][k].second) d[G[j][k].first]=d[j]+G[j][k].second;
}
return 1;
}
int main()
{
f>>n>>m;
while(m--)
{
int a,b,c;
f>>a>>b>>c;
G[a].push_back(make_pair(b,c));
}
if(bellman_ford(1))
for(int i=2;i<=n;i++)
g<<d[i]<<' ';
else g<<"Ciclu negativ!";
return 0;
}