Pagini recente » Cod sursa (job #1990088) | Cod sursa (job #3220609) | Cod sursa (job #2441782) | Cod sursa (job #919083) | Cod sursa (job #1124111)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream in("bellmanford.in");
ofstream out("bellmanford.out");
struct nod{int cost, fiu; nod(int fiu, int cost) { this->fiu = fiu; this->cost = cost;}};
vector <nod> a[50001];
queue <int> q;
int n, m, d[50001], count[50001];
bool bfs(int x)
{
q.push(x);
d[x]=0;
unsigned int i;
int y;
while(!q.empty())
{
x=q.front();
q.pop();
for(i=0;i<a[x].size();i++)
{
y=a[x][i].fiu;
if(d[x]+a[x][i].cost<d[y])
{
d[y]=d[x]+a[x][i].cost;
q.push(y);
++count[y];
if(count[y]==n) return false;
}
}
}
return true;
}
int main()
{
int i, x, y, z;
in>>n>>m;
for(i=1;i<=m;i++)
{
in>>x>>y>>z;
a[x].push_back(nod(y, z));
}
for(i=1;i<=n;i++) d[i]=250000000;
if(bfs(1)) for(i=2;i<=n;i++) out<<d[i]<<" ";
else out<<"Ciclu negativ!";
return 0;
}