Pagini recente » Cod sursa (job #1741503) | Cod sursa (job #412699) | Cod sursa (job #2402758) | Cod sursa (job #2180038) | Cod sursa (job #1999966)
#include<cstdio>
#include<queue>
#include<vector>
#define pb(x) push_back(x)
using namespace std;
const int nmax=50005;
const int inf=1e9+5;
typedef pair<int,int> ii;
queue<int> q;
vector<ii> g[nmax];
int n,m,dist[nmax],sizeus[nmax];
int main()
{
freopen("bellmanford.in","r",stdin);
freopen("bellmanford.out","w",stdout);
int i,j,x,y,c;
scanf("%d%d",&n,&m);
for(i=1;i<=m;++i)
{
scanf("%d%d%d",&x,&y,&c);
g[x].pb(ii(y,c));
}
dist[1]=0;
q.push(1);
for(i=2;i<=n;++i)
dist[i]=inf;
int node,currnode;
while(!q.empty())
{
node=q.front();
q.pop();
sizeus[node]++;
if(sizeus[node]>n)
{
printf("Ciclu negativ!");
return 0;
}
for(i=0;i<g[node].size();++i)
{
currnode=g[node][i].first;
if(dist[currnode]>dist[node]+g[node][i].second)
{
dist[currnode]=dist[node]+g[node][i].second;
q.push(currnode);
}
}
}
for(i=2;i<=n;++i)
printf("%d ",dist[i]);
}