Pagini recente » Cod sursa (job #637555) | Cod sursa (job #424571) | Cod sursa (job #1857241) | Cod sursa (job #176626) | Cod sursa (job #1894727)
#include<fstream>
#include<set>
#include<vector>
#define NMAX 50005
#define infinit 1500000000
using namespace std;
set<pair<int, int> > s;
vector<pair<int, int> > G[NMAX];
long long nod, i, val, fiu, d[NMAX], n, m, x, y, z;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
void dijkstra()
{
while(!s.empty())
{
nod = s.begin() -> second;
s.erase(*s.begin());
for(i = 0; i < G[nod].size(); i++)
{
val = G[nod][i].first;
fiu = G[nod][i].second;
if(d[nod] + val < d[fiu])
{
s.erase(make_pair(d[fiu], fiu));
d[fiu] = d[nod] + val;
s.insert(make_pair(d[fiu], fiu));
}
}
}
}
int main()
{
cin >> n >> m;
for(i = 1; i <= m; i++)
{
cin >> x >> y >> z;
G[x].push_back(make_pair(z, y));
}
for(i = 1; i <= n; i++)
{
d[i] = infinit;
}
d[1] = 0;
s.insert(make_pair(0, 1));
dijkstra();
for(i = 2; i <= n; i++)
{
d[i] != infinit ? cout << d[i] << " " : cout << "0 ";
}
return 0;
}