Pagini recente » Cod sursa (job #2222171) | Cod sursa (job #929678) | Cod sursa (job #1785762) | Cod sursa (job #58255) | Cod sursa (job #1747085)
#include <cstdio>
#include <vector>
#include <bitset>
using namespace std;
vector < pair <int, int> > v[50005];
int dp[50005];
bool vis[50005];
const int INF = 1<<30;
int main(){
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
int n,m,i,x,y,c;
scanf("%d %d", &n, &m);
for(i = 1;i <= m;i++){
scanf("%d %d %d", &x, &y, &c);
v[x].push_back({y, c});
}
for(i = 2;i <= n;i++){
dp[i] = INF;
}
int mn,id;
int all = n-1;
while(all){
mn = INF;
for(i = 1;i <= n;i++){
if(dp[i] < mn && vis[i] == 0){
mn = dp[i];
id = i;
}
}
vis[id] = 1;
for(auto it : v[id]){
if(dp[it.first] > dp[id] + it.second){
dp[it.first] = dp[id] + it.second;
}
}
all--;
}
for(i = 2;i <= n;i++){
printf("%d ",dp[i]);
}
return 0;
}