Pagini recente » Rating Rares (raresel) | Cod sursa (job #494213) | Cod sursa (job #2256696) | Cod sursa (job #3265650) | Cod sursa (job #2237452)
#include<fstream>
#include<vector>
#include<queue>
#define NMAX 50001
#define oo 100000001
#define pb push_back
#define mp make_pair
using namespace std;
ifstream in("bellmanford.in");
ofstream out("bellmanford.out");
int N,M,x,y,c,vec,cost,nod,d[NMAX],nr[NMAX];
bool ok=0;
vector<pair<int,int> >matrix[NMAX];
queue<int>q;
int main()
{
int i;
in>>N>>M;
for(i=0;i<M;i++)
{
in>>x>>y>>c;
matrix[x].pb(mp(y,c));
}
for(i=2;i<=N;i++)
d[i]=oo;
d[1]=0;
q.push(1);
while(!q.empty()&!ok)
{
nod=q.front();
q.pop();
for(i=0;i<matrix[nod].size();i++)
{
vec=matrix[nod][i].first;
cost=matrix[nod][i].second;
if(cost+d[nod]<d[vec])
{
d[vec]=cost+d[nod];
nr[nod]++;
if(nr[nod]==N)
ok=1;
else
q.push(vec);
}
}
}
if(ok)
out<<"Ciclu negativ!";
else
for(i=2;i<=N;i++)
out<<d[i]<<" ";
}