Pagini recente » Cod sursa (job #1622035) | Cod sursa (job #3302219) | Cod sursa (job #3163296) | Cod sursa (job #1584345) | Cod sursa (job #1479524)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int nmax = 50005;
const int INF = 1e9;
int n, d[nmax];
set < pair < int, int > > s;
vector < int > graf[nmax], cost[nmax];
void dijkstra()
{
int dad, son, dist, c;
for(int i = 2; i <= n; i++)
d[i] = INF;
s.insert(make_pair(0, 1));
while(!s.empty())
{
dist=s.begin()->first;
dad=s.begin()->second;
s.erase(s.begin());
for(int i=0; i<graf[dad].size(); i++)
{
son=graf[dad][i];
c=cost[dad][i];
if(d[son] > dist+c)
{
d[son]=dist+c;
s.insert(make_pair(d[son], son));
}
}
}
}
int main()
{
int m, a, b, c;
fin >> n >> m;
for(int i = 1; i <= m; i++)
{
fin >> a >> b >> c;
graf[a].push_back(b);
cost[a].push_back(c);
}
dijkstra();
for(int i = 2; i <= n; i++)
{
if(d[i] == INF) fout << 0 << " ";
else fout << d[i] << " ";
}
return 0;
}