Advertisement
Guest User

Untitled

a guest
Feb 25th, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1.  
  2. #include <bits/stdc++.h>
  3. #define NM 105
  4. #define mp make_pair
  5. #define pii pair <int,int>
  6. using namespace std;
  7. ifstream f("firma.in");
  8. ofstream g("firma.out");
  9.  
  10. int n,m,d[NM];
  11.  
  12. vector <pii> v[NM];
  13. set <pii> heap;
  14.  
  15. void Dijkstra(int nod)
  16. { for(int i=1; i<=n; i++)
  17. d[i]=(1<<30);
  18. heap.insert(mp(0,nod));
  19. d[nod]=0;
  20. while(!heap.empty())
  21. { int nod=(*heap.begin()).second;
  22. heap.erase(heap.begin());
  23. vector <pii> :: iterator it;
  24. for(it=v[nod].begin(); it!=v[nod].end(); it++)
  25. { int nodV=(*it).first,cost=(*it).second;
  26. if(d[nod]+cost<d[nodV])
  27. { if(d[nodV]!=(1<<30))
  28. heap.erase(heap.find(mp(d[nodV],nodV)));
  29. heap.insert(mp(cost+d[nod],nodV));
  30. d[nodV]=cost+d[nod];
  31. }
  32. }
  33. }
  34. }
  35.  
  36. int main()
  37. { f>>n>>m;
  38. while(m--)
  39. { int x,y,val;
  40. f>>x>>y>>val;
  41. v[x].push_back(mp(y,val));
  42. v[y].push_back(mp(x,val));
  43. }
  44. int sMin=(1<<30),iMin=0;
  45. for(int i=1; i<=n; i++)
  46. { Dijkstra(i);
  47. int s=0;
  48. for(int i=1; i<=n; i++)
  49. s+=d[i];
  50. if(s<sMin)
  51. { sMin=s;
  52. iMin=i;
  53. }
  54. }
  55. g<<iMin;
  56. f.close(); g.close(); return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement