Advertisement
Guest User

Untitled

a guest
May 22nd, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. #include<iostream>
  2. #include<vector>
  3. #include<queue>
  4.  
  5. using namespace std;
  6.  
  7. const int inf=2009000999;
  8.  
  9. int main(){
  10. int num;
  11. cin >> num;
  12. for(int g=0;g<num;++g){
  13. int n,m;
  14. cin >> n >> m;
  15. vector< vector< pair<int,int> > > graph(n);
  16. for(int i=0;i<m;++i){
  17. int t1,t2,t3;
  18. cin >> t1 >> t2 >> t3;
  19. graph[t1].push_back({t3,t2});
  20. graph[t2].push_back({t3,t1});
  21. }
  22. int start;
  23. cin >> start;
  24.  
  25. priority_queue< pair<int,int> > q;
  26. vector<int> len(n,inf);
  27. len[start]=0;
  28. q.push({0,start});
  29. while(!q.empty()){
  30. pair<int,int> tmp=q.top();
  31. q.pop();
  32. if(-tmp.first>len[tmp.second])
  33. continue;
  34. for(int i=0;i<graph[tmp.second].size();++i)
  35. if(len[tmp.second]+graph[tmp.second][i].first<len[graph[tmp.second][i].second]){
  36. q.push({-len[tmp.second]-graph[tmp.second][i].first,graph[tmp.second][i].second});
  37. len[graph[tmp.second][i].second]=len[tmp.second]+graph[tmp.second][i].first;
  38. }
  39. }
  40. for(int i=0;i<n;++i)
  41. cout << len[i] << ' ';
  42. cout << endl;
  43. }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement