Pagini recente » Cod sursa (job #1521021) | Cod sursa (job #1947877) | Cod sursa (job #1974613) | Cod sursa (job #421503) | Cod sursa (job #2103038)
#include <bits/stdc++.h>
using namespace std;
ifstream in("bellmanford.in");
ofstream out("bellmanford.out");
const int nx=50002;
int dist[nx];
int viz[nx];
int n,m,i,j,c;
struct arc
{
int d;
int c;
};
vector < arc > v[nx];
void bellman_ford()
{
dist[1]=0;
for(int i=2; i<=n; i++)
dist[i]=INT_MAX;
queue < int > q;
q.push(1);
while(!q.empty())
{
int x=q.front();
viz[x]++;
if(viz[x]==n)
{
out<<"Ciclu negativ!";
return;
}
q.pop();
for(vector < arc > :: iterator it=v[x].begin(); it!=v[x].end(); it++)
if(dist[it->d]>dist[x]+it->c)
{
dist[it->d]=dist[x]+it->c;
q.push(it->d);
}
}
for(int i=2; i<=n; i++)
out<<dist[i]<<' ';
}
int main()
{
in>>n>>m;
for(;m;m--)
{
in>>i>>j>>c;
v[i].push_back({j,c});
}
bellman_ford();
return 0;
}