Pagini recente » Cod sursa (job #2597342) | Cod sursa (job #1307861) | Cod sursa (job #2210409) | Cod sursa (job #346954) | Cod sursa (job #3176649)
#include <fstream>
#include <algorithm>
#include <vector>
#include <queue>
#define INF 1e10
#define sz 50000
using namespace std;
ifstream fin("bellmanford.in");
ofstream fout("bellmanford.out");
int viz[sz + 5];
bool in_queue[sz + 5];
int d[sz + 5];
struct muchie{
int x;
int cost;
};
vector <muchie> v[sz + 5];
queue <int> q;
int n,m;
int main()
{
fin>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y,cost;
fin>>x>>y>>cost;
v[x].push_back({y,cost});
}
for(int i=2;i<=n;i++)
d[i] = INF;
q.push(1);
viz[1]=1;
in_queue[1]=1;
while(!q.empty())
{
int nod = q.front();
in_queue[nod]=false;
q.pop();
for(auto& i : v[nod])
{
int vec = i.x;
int cost = i.cost;
if(d[vec] > d[nod] + cost)
{
d[vec] = d[nod] + cost;
viz[vec]++;
if(!in_queue[vec])
q.push(vec),in_queue[vec]=true;
if(viz[vec] >= n)
{
fout<<"Ciclu negativ!";
return 0;
}
}
}
}
for(int i=2;i<=n;i++)
fout<<d[i]<<' ';
}