Pagini recente » Cod sursa (job #626114) | Cod sursa (job #2291219) | Cod sursa (job #3235466) | Cod sursa (job #503127) | Cod sursa (job #787320)
Cod sursa(job #787320)
#include <fstream>
#include <vector>
#include <queue>
#define INF 1000000000
#define MAXN 50005
using namespace std;
ifstream f("bellmanford.in");
ofstream g("bellmanford.out");
struct muchie{
int nod,cost;};
int n,m,x,y,d[MAXN],rang[MAXN];
vector<muchie> G[MAXN];
muchie aux;
queue<int> q;
bool uz[MAXN];
int main()
{
int i;
f>>n>>m;
for(i=1;i<=m;i++){
f>>x>>aux.nod>>aux.cost;
G[x].push_back(aux);}
for(i=2;i<=n;i++)
d[i]=INF;
rang[1]=1;
q.push(1);
while(!q.empty()){
x=q.front();
q.pop();
if(rang[x]>n){
g<<"Ciclu negativ!";
return 0;}
uz[x]=0;
y=rang[x]+1;
for(i=0;i<G[x].size();i++){
if(d[x]+G[x][i].cost<d[G[x][i].nod]){
d[G[x][i].nod]=d[x]+G[x][i].cost;
if(!uz[G[x][i].nod]){
uz[G[x][i].nod]=1;
q.push(G[x][i].nod);}
rang[G[x][i].nod]=y;}}}
for(i=2;i<=n;i++)
g<<d[i]<<' ';
f.close();
g.close();
return 0;
}