Pagini recente » Cod sursa (job #2963927) | Cod sursa (job #764397) | Cod sursa (job #1308757) | Cod sursa (job #395614) | Cod sursa (job #639938)
Cod sursa(job #639938)
#include<fstream>
#include<queue>
#define inf 1000000000
using namespace std;
vector <pair<int,int> > a;
queue <int> q;
ifstream f("bellmanford.in");
ofstream g("bellmanford.out");
int i,j,m,n,viz[50001],x,y,c,k,d[50001];
int mai ()
{
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y>>c;
a[x].push_back(make_pair(y,c));
}
for(i=1;i<=n;i++)
d[i]=inf;
q.push(1);
viz[1]=1;
d[1]=0;
while(!(q.empty()))
{
k=q.front();
for(i=0;i<a[k].size();i++)
{
int nod=a[k][i].first;
int cost=a[k][i].second;
y=d[k]+cost;
if(viz[nod]==0 || y<d[nod])
{
q.push(nod);
d[nod]=y;
viz[nod]++;
if(viz[nod]>n)
{ g<<"Ciclu negativ!";
return 0;
}
}
}
q.pop();
}
for(i=2;i<=n;i++)
g<<d[i]<<" ";
return 0;
}