Pagini recente » Cod sursa (job #2402698) | Cod sursa (job #1403566) | Cod sursa (job #1065742) | Cod sursa (job #2932316) | Cod sursa (job #2304364)
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream fin("bellmanford.in");
ofstream fout("bellmanford.out");
int n,m,x,y,z;
int d[50010],f[50010],check[50010];
vector < pair<int,int> > v[50010];
queue <int> c;
int main(){
fin>>n>>m;
for(int i=1;i<=m;i++){
fin>>x>>y>>z;
v[x].push_back(make_pair(y,z));
}
c.push(1);
f[1]=1;
d[1]=0;
for(int i=2;i<=n;i++){
d[i]=2000000000;
}
while(!c.empty()){
x=c.front();
c.pop();
f[x]=0;
for(int i=0;i<v[x].size();i++){
y=v[x][i].first;
if(d[y]>d[x]+v[x][i].second){
d[y]=d[x]+v[x][i].second;
if(f[y]==0){
check[y]++;
if(check[y]==n){
fout<<"Ciclu negativ!";
return 0;
}
c.push(y);
f[y]=1;
}
}
}
}
for(int i=2;i<=n;i++){
fout<<d[i]<<" ";
}
return 0;
}