Pagini recente » Cod sursa (job #989252) | Statistici Popazu Petru Andrei (PetruAndrei) | Cod sursa (job #372953) | Cod sursa (job #2338601) | Cod sursa (job #3336057)
// #include <bits/stdc++.h>
// using namespace std;
// ifstream fin ("date.in");
// #define rep(a,b) for(int i=a;i<=a;i++)
// int n,m,k,s;
// struct muchie{int a,b,cost;};
// vector<muchie> M;
// vector<int>control;
// int main() {
// fin>>n>>m;
// rep(1,m) {
// int x,y,z;
// fin>>x>>y>>z;
// M.push_back({x,y,z});
// M.push_back({y,x,z});
// }
// fin>>k;
// rep(1,k) {
// int x;
// fin>>x;
// control.push_back(x);
// }
// fin>>s;
//
//
//
// return 0;
// }
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
#define rep(a,b) for(int i=a;i<=b;i++)
const int INF = 1e9;
int n,m, d[50001],tata[50001];
vector<vector<pair<int,int>>> M;
void dijkstra (int s) {
rep(1,n) {
tata[i] = 0;
d[i] = INF;
}
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> Q;
d[s] = 0;
Q.push({d[s], s});
while (!Q.empty()) {
auto [dist_u, u] = Q.top();
Q.pop();
if (dist_u > d[u]) continue;
for (auto [v,cost] : M[u])
if (d[v] > cost + d[u]) {
d[v] = cost + d[u];
tata[v] = u;
Q.push({d[v],v});
}
}
}
int main() {
fin>>n>>m;
M.resize(m+1);
rep(1,m) {
int x,y,z;
fin>>x>>y>>z;
M[x].push_back({y,z});
}
dijkstra(1);
rep(1,n)if (i!=1)fout<<d[i]<<' ';
return 0;
}