Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- int dis[100];
- bool vis[100];
- vector<pair<int,int>>adj[100];
- priority_queue<pair<int,int>>q;
- void process(int x, int n)
- {
- for(int i=1; i<=n; i++)
- dis[i]=100000000;
- dis[x] = 0;
- q.push({0,x});
- while(!q.empty())
- {
- int a = q.top().second;
- q.pop();
- if(vis[a])
- continue;
- vis[a] = true;
- cout<<a<<" "<<dis[a]<<endl;
- for(auto u : adj[a])
- {
- int b =u.first;
- int w =u.second;
- if(vis[b])
- continue;
- if(dis[a]+w<dis[b])
- {
- dis[b]=dis[a]+w;
- q.push({-dis[b],b});
- }
- }
- }
- }
- int main()
- {
- vector<tuple<int,int,int>>edges;
- edges.push_back(make_tuple(1,2,5));
- edges.push_back(make_tuple(1,4,9));
- edges.push_back(make_tuple(1,5,1));
- edges.push_back(make_tuple(3,2,2));
- edges.push_back(make_tuple(3,4,6));
- edges.push_back(make_tuple(4,5,2));
- for(auto i:edges)
- {
- adj[get<1>(i)].push_back(make_pair(get<0>(i),get<2>(i)));
- adj[get<0>(i)].push_back(make_pair(get<1>(i),get<2>(i)));
- }
- process(1,7);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement