Pagini recente » Cod sursa (job #1615260) | Cod sursa (job #1986528) | Cod sursa (job #2084997) | Cod sursa (job #1611760) | Cod sursa (job #557906)
Cod sursa(job #557906)
#include <fstream>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n, m, d[50001], viz[50001];
struct muchie
{
int x, y, c,;
}mu[250001];
void citire()
{
fin>>n>>m;
for (int i=0; i<m; i++)
fin>>mu[i].x>>mu[i].y>>mu[i].c;
}
void init()
{
for (int i=2; i<=n; i++)
d[i]=100000;
}
void dijkstra()
{
int i=1, ok;
do
{
ok=1;
for (int j=0; j<m; j++)
if (mu[j].x==i && viz[mu[j].y]==0 && d[i]+mu[j].c<d[mu[j].y])
d[mu[j].y]=d[i]+mu[j].c;
else
if (mu[j].y==i && viz[mu[j].x]==0 && d[i]+mu[j].c<d[mu[j].x])
d[mu[j].x]=d[i]+mu[j].c;
viz[i]=1;
int mn=0;
for (int k=2; k<=n; k++)
if (viz[k]==0)
{
ok=0;
if(mn==0)
mn=k;
else
if (d[k]<d[mn])
mn=k;
}
i=mn;
}while(ok==0);
}
int main()
{
citire();
init();
dijkstra();
for (int i=2; i<=n; i++)
fout<<d[i]<<" ";
return 0;
}