Pagini recente » Istoria paginii runda/lol_contest_round_01 | Istoria paginii calibrare-limite-de-timp | Istoria paginii runda/cx21.03.2009 | Cod sursa (job #1796117) | Cod sursa (job #2646846)
#include<bits/stdc++.h>
using namespace std;
#define MAXN 50005
#define ll long long int
const int inf=2e9;
vector<vector<pair<int,int>>> edge(MAXN);
vector<int> d(MAXN, inf);
int main(){
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int n,m;
d[0]=0;
in>>n>>m;
int u,v,w;
for(int i=0;i<m;i++){
in>>u>>v>>w;
u--;v--;
edge[u].push_back(make_pair(v,w));
}
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> q;
q.push({d[0],0});
while(q.size()){
u=q.top().second;
q.pop();
for(auto x:edge[u]){
v=x.first;
w=x.second;
if(d[u]+w<d[v]){
q.push({d[u]+w,v});
d[v]=d[u]+w;
}
}
}
for(int i=1;i<n;i++){
if(d[i]!=inf)
out<<d[i]<<" ";
else
out<<"0 ";
}
out<<"\n";
return 0;
}