Pagini recente » Cod sursa (job #3279208) | Cod sursa (job #2660793) | Cod sursa (job #3234439) | Cod sursa (job #2946862) | Cod sursa (job #3205322)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m,p;
vector<bool>used(100005);
vector<vector<pair<int,int>>>adj(100005);
void dijkstra(int nod){
vector<int>d(n+1,1e9);
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;
pq.push({0,nod});
used[1]=1;
d[nod]=0;
while(!pq.empty()){
int son=pq.top().second;
used[son]=0;
pq.pop();
for(auto m : adj[son]){
int vecin=m.first;
int distanta=m.second;
if(d[vecin]>d[son]+distanta){
d[vecin]=d[son]+distanta;
if(!used[vecin])pq.push({d[vecin],vecin});
}
}
}
for(int i=2;i<=n;i++){
if(d[i]!=1e9)fout<<d[i] << ' ';
else fout << 0 << ' ';
}
}
int main() {
fin>>n>>m;
for(int i=1;i<=m;i++){
int x,y,d;
fin>>x>>y>>d;
adj[x].push_back({y,d});
adj[y].push_back({x,d});
}
dijkstra(1);
return 0;
}