Pagini recente » Cod sursa (job #567731) | Cod sursa (job #2253681) | Cod sursa (job #2305362) | Cod sursa (job #601065) | Cod sursa (job #2304424)
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream fin("bellmanford.in");
ofstream fout("bellmanford.out");
int n,m,x,y,z;
int dist[50010],f[50010],verif[50010];
vector < pair<int,int> > v[50010];
queue <int> coada;
int main(){
fin>>n>>m;
for(int i=1;i<=m;i++){
fin>>x>>y>>z;
v[x].push_back(make_pair(y,z));
}
coada.push(1);
f[1]=1;
dist[1]=0;
for(int i=2;i<=n;i++){
dist[i]=1000000000;
}
while(!coada.empty()){
x=coada.front();
coada.pop();
f[x]=0;
for(int i=0;i<v[x].size();i++){
y=v[x][i].first;
if(dist[y]>dist[x]+v[x][i].second){
dist[y]=dist[x]+v[x][i].second;
if(f[y]==0){
verif[y]++;
if(verif[y]==n){
fout<<"Ciclu negativ!";
return 0;
}
coada.push(y);
f[y]=1;
}
}
}
}
for(int i=2;i<=n;i++){
fout<<dist[i]<<" ";
}
return 0;
}