fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long int ll;
  4. typedef pair <ll,ll> ii;
  5. int main()
  6. {
  7.  
  8. ll a,b,c,d,e,f,g,h,i,node,edge,x,y,w,v,n=0,m,k,s,p=0,oldnode,oldedge,source;
  9. cin>>w;
  10. for(v=0;v<w;v++)//3
  11. {
  12. cin>>node;
  13. cin>>oldnode;
  14. cin>>oldedge;
  15. cin>>edge;
  16. cin>>source;
  17. bool arr[node+1];
  18. ll arr2[node+1];
  19. memset(arr,false,sizeof(arr));arr[node]=false;
  20. memset(arr2,0,sizeof(arr2));arr2[node]=0;
  21. vector < pair <ll,ll> > v[node+1];
  22. priority_queue< ii, vector <ii> , greater <ii> > pq;
  23. for(a=1;a<=oldnode;a++)
  24. {
  25. for(m=a+1;m<=oldnode;m++)
  26. {
  27. v[a].push_back(make_pair(m,oldedge));
  28. v[m].push_back(make_pair(a,oldedge));
  29.  
  30. }}
  31. for(a=0;a<edge;a++)
  32. {
  33. cin>>b>>c>>d;
  34. v[b].push_back(make_pair(c,d));
  35. v[c].push_back(make_pair(b,d));
  36. }
  37. pq.push( make_pair(0,source));
  38. n=0;y=0;p=0;
  39. while(!pq.empty())
  40. {
  41. x = pq.top().second;//node
  42. y = pq.top().first;//distance
  43. pq.pop();
  44. if(arr[x]==false)
  45. {p++;arr2[x] = y;arr[x]=true;
  46. for(b=0;b<v[x].size();++b)
  47. {if(arr[v[x][b].first]==false)
  48. pq.push( make_pair(v[x][b].second + y,v[x][b].first));
  49. }
  50. }
  51. else{}
  52. if(p>=node)break;
  53.  
  54. }
  55. for(i=1;i<=node;i++)
  56. {
  57. cout<<arr2[i]<<" ";
  58. }
  59. cout<<"\n";
  60. }
  61. }
Runtime error #stdin #stdout #stderr 0s 80768KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc