Pagini recente » Cod sursa (job #2793923) | Cod sursa (job #3125430) | Cod sursa (job #2329529) | Cod sursa (job #2429189) | Cod sursa (job #662973)
Cod sursa(job #662973)
#include<fstream>
#include<vector>
#define Nmax 50001
#define Inf 1001
using namespace std;
vector< pair <int, int> > G[Nmax];
int a, b, n, m, i, cost, j;
int d[Nmax], viz[Nmax], Vfmin, Dmin;
void dijkstra()
{
viz[1]=1;
for(j=1;j<n;j++)
{
Dmin=Inf;
for(i=2;i<=n;i++)
if(!viz[i] && Dmin>d[i])
{
Dmin=d[i];
Vfmin=i;
}
viz[Vfmin]=1;
for(i=0;i<G[Vfmin].size();i++)
if(!viz[G[Vfmin][i].first] && Dmin+G[Vfmin][i].second<d[G[Vfmin][i].first])
d[G[Vfmin][i].first]=Dmin+G[Vfmin][i].second;
}
}
int main()
{
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
scanf("%d%d", &n, &m);
for(i=1;i<=n;i++)
{
scanf("%d%d%d", &a, &b, &cost);
G[a].push_back(make_pair(b, cost));
}
for(i=1;i<=n;i++)
d[i]=Inf;
for(i=0;i<G[1].size();i++)
d[G[1][i].first]=G[1][i].second;
dijkstra();
for(i=2;i<=n;i++)
printf("%d ", d[i]);
printf("\n");
fclose(stdin);
fclose(stdout);
return 0;
}