Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <queue>
- #include <vector>
- #include<fstream>
- using namespace std;
- int main(){
- ifstream in;
- ofstream ou;
- in.open("input.txt");
- ou.open("output.txt");
- int nodi,archi,nodoiniziale,nododaraggiungere;
- in>>nodi;
- vector<pair<int,int>> v[nodi];
- in>>archi;
- in>>nodoiniziale;
- nodoiniziale--;
- in>>nododaraggiungere;
- nododaraggiungere--;
- int a,b,c;
- for(int i=0;i<archi;i++){
- in>>a;
- in>>b;
- in>>c;
- a--;
- b--;
- v[a].push_back({b,c});
- v[b].push_back({a,c});
- }
- priority_queue<pair<int,int>> q;
- int visitato[nodi];
- int distanze[nodi];
- for(int i=0;i<nodi;i++){
- visitato[i]=0;
- distanze[i]=1e9;
- }
- distanze[nodoiniziale]=0;
- q.push({nodoiniziale,0});
- int corrente;
- while (q.size()!=0||corrente!=nododaraggiungere){
- corrente= q.top().first;
- q.pop();
- if (visitato[corrente]==0){
- visitato[corrente] = 1;
- for (auto w : v[corrente]) {
- if (distanze[corrente]+w.second < distanze[w.first]) {
- distanze[w.first] = distanze[corrente]+w.second;
- q.push({w.first,-distanze[w.first]});
- }
- }
- }
- }
- ou<<distanze[nododaraggiungere];
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement