Pagini recente » Cod sursa (job #1117604) | Istoria paginii runda/simulare_republicana_2 | Cod sursa (job #1246267) | Istoria paginii runda/speed_noapte | Cod sursa (job #2646830)
#include<bits/stdc++.h>
using namespace std;
#define MAXN 5e4+10
#define ll long long int
vector<vector<int>> edge(MAXN);
vector<int> d(MAXN, 1e9);
map<pair<int,int>,int> weight;
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(v);
edge[v].push_back(u);
weight[{u,v}]=w;
weight[{v,u}]=w;
}
priority_queue<int>q;
q.push(0);
while(q.size()){
u=q.top();
q.pop();
for(int i=0;i<edge[u].size();i++){
v=edge[u][i];
if(d[u]+weight[{u,v}]<d[v]){
q.push(v);
d[v]=d[u]+weight[{u,v}];
}
}
}
for(int i=1;i<n;i++){
if(d[i]!=1e9)
out<<d[i]<<" ";
else
out<<"0 ";
}
out<<"\n";
return 0;
}