Pagini recente » Cod sursa (job #174770) | Cod sursa (job #732271) | Cod sursa (job #1611814) | Cod sursa (job #712261) | Cod sursa (job #2711966)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int INF = 1e9;
vector <pair <int, int>> adj[50001];
bitset <50001> u;
int d[50001], p[50001];
int N, M;
void dijkstra(int s) {
for(int i = 1;i <= N;i++)
d[i] = INF, p[i] = -1;
d[s] = 0;
for(int i = 1;i <= N;i++){
int v = -1;
for(int j = 1;j <= N;j++){
if(!u[j] && (v == -1 || d[j] < d[v]))
v = j;
}
if(d[v] == INF)
break;
u[v] = 1;
for(auto edge : adj[v]){
int to = edge.first;
int len = edge.second;
if(d[v] + len < d[to]) {
d[to] = d[v] + len;
p[to] = v;
}
}
}
}
int main(){
fin >> N >> M;
while(M--){
int x, y, val;
fin >> x >> y >> val;
adj[x].emplace_back(y, val);
}
dijkstra(1);
for(int i = 2;i <= N;i++)
fout << d[i] << " ";
}