Pagini recente » Cod sursa (job #3141884) | Cod sursa (job #2047809) | Rating Blidea Tudorel Alexandru (tuddi69666) | Cod sursa (job #2812078) | Cod sursa (job #2734868)
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
const int N=50005;
const long long INF=125e8+5;
int n,m,k,x,y,cost;
long long d[N];
bool ok;
vector< pair<int,int> >v[N];
queue<int>q;
void bellman_ford(int start)
{
q.push(start);
for(int i=1;i<=n;i++)
{
d[i]=INF;
}
d[start]=0;
ok=true;
while(!q.empty()&&ok==true)
{
int nod=q.front();
q.pop();
for(auto x:v[nod])
{
int vecin=x.first;
int cost=x.second;
if(d[vecin]>d[nod]+cost)
{
d[vecin]=d[nod]+cost;
q.push(vecin);
if(vecin==start)
{
ok=false;
}
}
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>x>>y>>cost;
v[x].push_back(make_pair(y,cost));
}
bellman_ford(1);
if(ok==false)
{
cout<<"Ciclu negativ!";
}
else
for(int i=2;i<=n;i++)
{
cout<<d[i]<<" ";
}
return 0;
}