Pagini recente » Cod sursa (job #2969330) | Cod sursa (job #2355275) | Cod sursa (job #2831007) | Cod sursa (job #58029) | Cod sursa (job #2270571)
#include <iostream>
#include <fstream>
#define maxn 50010
#define maxm 250010
#define inf 100000000
using namespace std;
ifstream f("bellmanford.in");
ofstream g("bellmanford.out");
int n,m,k,cost[maxn];
struct muchie
{
long a,b,c;
} e[maxm];
void initializare()
{
cost[1]=0;
for(int i=2; i<=n; i++)
cost[i]=inf;
}
void solutie()
{
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
if(cost[e[j].a]+e[j].c<cost[e[j].b])
cost[e[j].b]=cost[e[j].a]+e[j].c;
}
bool verificare_ciclu()
{
for(int i=1; i<=m; i++)
if(cost[e[i].a]+e[i].c<cost[e[i].b])
return 1;
return 0;
}
int main()
{
f>>n>>m;
for(int i=1; i<=m; i++)
f>>e[i].a>>e[i].b>>e[i].c;
initializare();
solutie();
if(verificare_ciclu())
{
g<<"Ciclu negativ!\n";
return 0;
}
for(int i=2; i<=n; i++)
g<<cost[i]<<" ";
return 0;
}