Pagini recente » Cod sursa (job #1987403) | Cod sursa (job #3134091) | Cod sursa (job #725264) | Cod sursa (job #2859464) | Cod sursa (job #1013585)
#include<fstream>
#define maxn 50010
#define maxm 250010
#define inf 1000000000
using namespace std;
ifstream fin("bellmanford.in"); ofstream fout("bellmanford.out");
struct muchie
{
long a;
long b;
long c;
}v[maxm];
long n,m,i,j,k,cost[maxn];
void read()
{
fin>>n>>m;
for (long i=1; i<=m; i++)
fin>>v[i].a>>v[i].b>>v[i].c;
for (long i=2; i<=n; i++)
cost[i]=inf;
cost[1]=0;
}
void solve()
{
for(long i=1; i<=n; i++)
for(long j=1; j<=m; j++)
if(cost[v[j].a]+v[j].c<cost[v[j].b])
cost[v[j].b]=cost[v[j].a]+v[j].c;
}
long check_negativ()
{
for(long i=1; i<=m; i++)
if(cost[v[i].a]+v[i].c<cost[v[i].b])
return 1;
return 0;
}
int main ()
{
read ();
solve ();
if (check_negativ ())
{
fout<<"Ciclu negativ!\n";
return 0;
}
for (long i=2; i<=n; i++)
fout<<cost[i]<<" ";
fin.close (); fout.close ();
return 0;
}