Pagini recente » Cod sursa (job #2909544) | Cod sursa (job #913077) | Cod sursa (job #2371968) | Cod sursa (job #3278571) | Cod sursa (job #3176655)
#include <fstream>
#define INF 1e10
#include <vector>
#include <queue>
using namespace std;
ifstream cin("bellmanford.in");
ofstream cout("bellmanford.out");
int n,m,x,y,c;
int viz[50005],inq[50005];
int d[50005];
struct numar
{
int x,cost;
};
vector <numar> v[50005];
queue <int> q;
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>x>>y>>c;
v[x].push_back({y,c});
}
for(int i=2;i<=n;i++)
d[i]=INF;
q.push(1);
viz[1]=1;
inq[1]=1;
while(!q.empty())
{
int nod=q.front();
inq[nod]=0;
q.pop();
for(int i=0;i<v[nod].size();i++)
{
int vec=v[nod][i].x;
int cost=v[nod][i].cost;
if(d[vec]>d[nod]+cost)
{
d[vec]=d[nod]+cost;
viz[vec]++;
if(!inq[vec]){
inq[vec]=1;
q.push(vec);
}
}
if(viz[vec]>=n)
{
cout<<"Ciclu negativ!";
return 0;
}
}
}
for(int i=2;i<=n;i++)
cout<<d[i]<<" ";
return 0;
}