Pagini recente » Cod sursa (job #529950) | Cod sursa (job #2619332) | Cod sursa (job #2507644) | Cod sursa (job #541682) | Cod sursa (job #3251543)
#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdio>
#include <set>
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
typedef long long ll;
vector<pair<int,int>> gf[50001];
set<pair<ll,int>> s;
const int inf =10000000;
ll d[50001];
int n,m;
int main () {
fin >> n >> m;
for(int i=1;i<=m;i++)
{
int a,b,c;
fin >> a >> b >> c;
gf[a].push_back({b,c});
}
d[1]=0;
for(int i=2;i<=n;i++) d[i]=inf;
s.insert({0,1});
while(!s.empty())
{
int nod = s.begin()->second;
s.erase(s.begin());
for(auto ad : gf[nod])
{
if(d[ad.first] > d[nod]+ad.second)
{
s.erase({ d[ad.first] ,ad.first});
d[ad.first] = d[nod] + ad.second;
s.insert({ d[ad.first] ,ad.first});
}
}
}
for(int i=2;i<=n;i++)
fout << d[i] << " ";
return 0;
}