Pagini recente » Cod sursa (job #2794863) | Cod sursa (job #2890335) | Cod sursa (job #1066451) | Cod sursa (job #150102) | Cod sursa (job #554520)
Cod sursa(job #554520)
#include <fstream>
#include <vector>
#define maxn 50100
using namespace std;
struct adat
{
long kezd,veg,ut;
} a;
long n,m,dist[maxn];
vector<adat> v;
int bellman()
{
//itt
long l=1,k,h=n-1,g=m-1;
short ok=1;
dist[1]=0;
while (l<=h&&ok==1)
{
ok=0;
for (k=0;k<=g;++k)
if (dist[v[k].veg]>dist[v[k].kezd]+v[k].ut)
{
dist[v[k].veg]=dist[v[k].kezd]+v[k].ut;
ok=1;
}
++l;
}
return 0;
}
int main()
{
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
long i,x,y,cost;
in >> n >> m;
for (i=0;i<=n;++i) dist[i]=2000000;
for (i=1;i<=m;++i)
{
in >> x >> y >> cost;
a.kezd=x;
a.veg=y;
a.ut=cost;
v.push_back(a);
}
bellman();
for (i=2;i<=n;++i)
if (dist[i]==2000000) out << "0 ";
else out << dist[i] << " ";
in.close();
out.close();
return 0;
}