Pagini recente » Cod sursa (job #556095) | Cod sursa (job #2287579) | Cod sursa (job #2166656) | Cod sursa (job #1644848) | Cod sursa (job #2225664)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <climits>
using namespace std;
const int Maxx=5e4+1;
const int INF=1<<31;
const int Maxxx=25e4+1;
struct NODE {
int node,cost;
};
vector <NODE> A[Maxx];
queue <int> Q;
ifstream fin("bellmanford.in");
ofstream fout("bellmanford.out");
int n,m;
int nod,pret,x,y;
int ans[Maxx];
int ciclu[Maxxx];
void afis(bool n);
int main() {
fin>>n>>m;++m;
for (int i=1;i<=n;++i) ans[i]=INF;
for (;--m;){
fin>>x>>y>>pret;
A[x].push_back({y,pret});
}
Q.push(1);
ans[1]=0;
while (!Q.empty()){
nod=Q.front();
Q.pop();
for (int i=0;i<A[nod].size();++i){
if (ans[A[nod][i].node]>ans[nod]+A[nod][i].cost){
ans[A[nod][i].node]=ans[nod]+A[nod][i].cost;
Q.push(A[nod][i].node);
++ciclu[A[nod][i].node];
if (ciclu[A[nod][i].node]>n) {
fout<<"Ciclu negativ!";
return 0;
}
}
}
}
for (int i=2;i<=n;++i)
fout<<ans[i]<<" ";
return 0;
}