Pagini recente » Istoria paginii problema/dictator | Monitorul de evaluare | Cod sursa (job #786128) | Cod sursa (job #333148) | Cod sursa (job #3323962)
#include <fstream>
#include <queue>
#include <vector>
#include <iostream>
using namespace std;
const int INF = 1e9;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int main() {
int V, E;
fin >> V >> E;
vector<vector<pair<int,int>>> adj(V);
for (int i = 0; i < E; i++) {
int u, v, w;
fin >> u >> v >> w;
adj[u-1].push_back({v-1, w});
}
int s = 0;
vector<int> d(V, INF);
d[s] = 0;
priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq;
pq.push({0, s});
while (!pq.empty()) {
int dist_u = pq.top().first;
int u = pq.top().second;
pq.pop();
if (dist_u > d[u]) continue;
for (auto edge : adj[u]) {
int v = edge.first;
int w = edge.second;
if (d[u] + w < d[v]) {
d[v] = d[u] + w;
pq.push({d[v], v});
}
}
}
for (int i = 1; i < V; i++){
fout << "Distanta de la 1 la " << i+1 << " este " << d[i] << "\n";
cout << "Distanta de la 1 la " << i+1 << " este " << d[i] << "\n";
}
fin.close();
fout.close();
return 0;
}