Pagini recente » Cod sursa (job #2575169) | Cod sursa (job #595916) | Cod sursa (job #3248984) | Cod sursa (job #3289065) | Cod sursa (job #2907314)
#include <bits/stdc++.h>
using namespace std;
ifstream f("bellmanford.in");
ofstream g("bellmanford.out");
const int NMAX= 5e4 + 10;
const int inf = 1e9;
int n,m,dist[NMAX], checked[NMAX];
vector < pair < int, int > > v[NMAX];
int main(){
f >> n >> m;
for(int i = 0 ; i < m ; i++){
int x, y, z;
f >> x >> y >> z;
v[x].push_back({y,z});
}
for(int i = 2 ; i <= n ; i++)
dist[i] = inf;
deque < int > q;
q.push_back(1);
while(!q.empty()){
int node = q.front();
q.pop_front();
for(auto it: v[node]){
if(dist[it.first] > dist[node] + it.second){
dist[it.first] = dist[node] + it.second;
q.push_back(it.first);
checked[it.first] = checked[node] + 1;
if(checked[it.first] > n + 2){
g << "Ciclu negativ!\n";
return 0;
}
}
}
}
for(int i = 2 ; i <= n ; i++)
g << dist[i] << " ";
return 0;
}