Pagini recente » Cod sursa (job #2615603) | Cod sursa (job #1327167) | Cod sursa (job #1157393) | Cod sursa (job #512989) | Cod sursa (job #2459171)
#include <fstream>
#include <vector>
#include <climits>
#include <queue>
using namespace std;
ifstream fin("bellmanford.in");
ofstream fout("bellmanford.out");
int n,m,i,x,y,c,nr[50005],d[50005];
bool viz[50005];
struct arc{
int v,c;
};
vector <arc> g[50005];
queue <int> q;
int main(){
fin>>n>>m;
for(i=1;i<=m;i++){
fin>>x>>y>>c;
g[x].push_back({y,c});
}
for(i=2;i<=n;i++)
d[i]=INT_MAX;
q.push(1);
viz[1]=1;
nr[1]=1;
while(!q.empty()){
int nod=q.front();
q.pop();
viz[nod]=0;
for(i=0;i<g[nod].size();i++){
int nou=g[nod][i].v;
int cost=g[nod][i].c;
if(d[nou]>d[nod]+cost){
d[nou]=d[nod]+cost;
nr[nou]++;
if(nr[nou]==n){
fout<<"Ciclu negativ!"<<'\n';
return 0;
}
if(!viz[nou]){
q.push(nou);
viz[nou]=1;
}
}
}
}
for(i=2;i<=n;i++)
fout<<d[i]<<' ';
return 0;
}