Pagini recente » Cod sursa (job #2868370) | Cod sursa (job #652772) | Cod sursa (job #2390570) | Cod sursa (job #169083) | Cod sursa (job #825128)
Cod sursa(job #825128)
#include <stdio.h>
# include <vector>
# include <queue>
# include <string.h>
# define INF 0x3f3f
using namespace std;
vector < pair < int, int> > v[50010];
queue < int > q;
int d[50010],i,p,n,x,y,c,nod,vecin,nod1[50010];
bool use[50010];
int main()
{
freopen("bellmanford.in","r",stdin);
freopen("bellmanford.out","w",stdout);
scanf("%d %d\n",&n,&p);
for (i=1; i<=p; i++)
{
scanf("%d %d %d\n",&x,&y,&c);
v[x].push_back(make_pair(y,c));
}
memset(d,INF,sizeof(d));
d[1]=0;
q.push(1);
use[1]=true;
while (!q.empty())
{
nod=q.front();
q.pop();
use[nod]=false;
for (vector < pair <int , int> > :: iterator it=v[nod].begin(); it!=v[nod].end(); ++it)
{
vecin=(*it).first;
if (d[vecin]>d[nod]+ (*it).second)
{
d[vecin]=d[nod]+ (*it).second;
if (use[vecin]==false)
{
use[vecin]=true;
q.push(vecin);
nod1[vecin]++;
if (nod1[vecin]>n)
{
printf("CICLU NEGATIV\n");
return 0;
}
}
}
}
}
for (i=1; i<=n; i++)
printf("%d ",d[i]);
return 0;
}