Pagini recente » Cod sursa (job #2321982) | Cod sursa (job #1515218) | Cod sursa (job #2628547) | Cod sursa (job #2127808) | Cod sursa (job #2565444)
#include <bits/stdc++.h>
#define inf 2000000000
#define dim 50005
using namespace std;
ifstream fin("bellmanford.in");
ofstream fout("bellmanford.out");
deque<int> q;
vector <pair<int,int> > L[dim];
int n,m,d[dim],x,y,z;
bitset<dim> iq;
int fr[dim];
int bf(int nod){
int i;
q.push_back(nod);
for(i=1;i<=n;i++)
d[i]=inf;
d[1]=0;
while(!q.empty()){
nod=q.front();
q.pop_front();
iq[nod]=0;
fr[nod]++;
if(fr[nod]==n)
return -1;
for(auto it:L[nod]){
int v=it.first;
int c=it.second;
if(d[v]>d[nod]+c){
d[v]=d[nod]+c;
if(iq[v]==0){
q.push_back(v);
}
iq[v]=1;
}
}
}
return 0;
}
int main()
{
fin>>n>>m;
for(int i=1;i<=m;i++){
fin>>x>>y>>z;
L[x].push_back({y,z});
}
int val=bf(1);
if(val==-1){
fout<<"Ciclu negativ!";
return 0;
}
for(int i=2;i<=n;i++)
fout<<d[i]<<" ";
}