Pagini recente » Cod sursa (job #2418928) | Cod sursa (job #2392766) | Cod sursa (job #1415110) | Cod sursa (job #2295170) | Cod sursa (job #906451)
Cod sursa(job #906451)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
#define inf 1000000000
#define maxn 50005
vector <int> muchii[maxn],cost[maxn];
int dist[maxn];
int nr_noduri,nr_muchii;
void bellman_ford (int start)
{
int dist[nr_noduri+1],i,j,k;
ofstream g("bellmanford.out");
for (i=1;i<=nr_noduri;i++)
if (i==start)
{
dist[i]=0;
}
else
{
dist[i]=inf;
}
k=0;
while (k<nr_noduri)
{
for (i=1;i<=nr_noduri;i++)
for (j=0;j<muchii[i].size();j++)
{
if (dist[i]+cost[i][j]<dist[muchii[i][j]])
{
dist[muchii[i][j]]=dist[i]+cost[i][j];
}
}
k=k+1;
}
for (i=2;i<=nr_noduri;i++)
g<<dist[i]<<" ";
g.close();
}
int main()
{
int i,a,b,c;
ifstream f("bellmanford.in");
f>>nr_noduri>>nr_muchii;
for (i=1;i<=nr_muchii;i++)
{
f>>a>>b>>c;
muchii[a].push_back(b);
cost[a].push_back(c);
}
bellman_ford(1);
f.close();
return 0;
}