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