Pagini recente » Cod sursa (job #2941518) | Cod sursa (job #721978) | Cod sursa (job #1226755) | Cod sursa (job #77931) | Cod sursa (job #2959774)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("bellmanford.in");
ofstream g("bellmanford.out");
int n,m,fr[50001],b[50001],dist[50001];
queue<int>q;
bool ver[50001];
vector<pair<int,int>>a[50001];
void bf()
{
q.push(1);
dist[1]=0;
b[1]=1;
while(!q.empty())
{
int nod=q.front();
q.pop();
if(fr[nod]==n+1)
{
g<<"Ciclu negativ!";
exit(0);
}
b[nod]=0;
for (auto it: a[nod])
{
int vec=it.first;
int d=it.second;
if(dist[vec]>dist[nod]+d)
{
dist[vec]=dist[nod]+d;
if(b[vec]==0)
{
b[vec]=1;
q.push(vec);
fr[vec]++;
}
}
}
}
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;i++)
{
int X,Y,Z;
f>>X>>Y>>Z;
a[X].push_back({Y,Z});
}
for(int i=1;i<=n;i++)
dist[i]=1e9;
bf();
for(int i=2;i<=n;i++)
if(dist[i]!=1e9)
g<<dist[i]<<" ";
else
g<<-1<<" ";
return 0;
}