Advertisement
umnov

Untitled

Jan 20th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.79 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. const int inf = 1e9;
  6.  
  7. int n;
  8. vector<vector<pair<int, int>>> g;
  9.  
  10. struct vrt {
  11. int ind;
  12. int real_dist;
  13. int set_dist;
  14.  
  15. vrt() {
  16. ind = -1;
  17. }
  18.  
  19. vrt(int i) {
  20. ind = i;
  21. real_dist = inf;
  22. set_dist = inf;
  23. }
  24.  
  25. vrt(int a, int b, int c) {
  26. ind = a;
  27. real_dist = b;
  28. set_dist = c;
  29. }
  30.  
  31. bool operator <(const vrt &other) const {
  32. return set_dist < other.set_dist;
  33. }
  34. };
  35.  
  36. int solve(int start) {
  37. vector<int> p(n, -1);
  38. vector<int> d(n, inf);
  39. set<vrt> tmp;
  40. vector<vrt> uu;
  41. for (int i = 0; i < n; i++) {
  42. if (i == start) {
  43. tmp.insert(vrt(i, 0, 0));
  44. uu.push_back(vrt(i, 0, 0));
  45. } else {
  46. tmp.insert(vrt(i));
  47. uu.push_back(vrt(i));
  48. }
  49. }
  50. while (!tmp.empty()) {
  51. int cur = (*tmp.begin()).ind;
  52. tmp.erase(tmp.begin());
  53. for (auto [u, w] : g[cur]) {
  54. if (uu[u].real_dist > uu[cur].real_dist + w) {
  55. tmp.erase({d[t.first], t.first});
  56. p[t.first] = cur;
  57. d[t.first] = d[cur] + t.second;
  58. tmp.insert({d[t.first], t.first});
  59. }
  60. }
  61. }
  62. cerr << "d " << d[1] << endl;
  63. cerr << "p " << p[1] << endl;
  64. int ans = 0;
  65. for (int i = 0; i < n; i++) {
  66. for (int j = 0; j < n; j++) {
  67. if (p[j] == i) {
  68. int b = inf;
  69. for (auto [u, w] : g[i]) {
  70. if (u == j) {
  71. b = min(b, w);
  72. }
  73. }
  74. ans += b;
  75. cerr << "uu " << j + 1 << ' ' << b << endl;
  76. }
  77. }
  78. }
  79. return ans;
  80. }
  81.  
  82. signed main() {
  83. ios_base::sync_with_stdio(false);
  84. cin.tie(nullptr);
  85.  
  86. #ifdef LOCAL
  87. assert(freopen("input.txt", "r", stdin));
  88. assert(freopen("output.txt", "w", stdout));
  89. #endif
  90.  
  91. // int m;
  92. // cin >> n >> m;
  93. // g.resize(n);
  94. // for (int i = 0; i < m; i++) {
  95. // int u, v, c;
  96. // cin >> u >> v >> c;
  97. // u--;
  98. // v--;
  99. // g[u].push_back({v, c});
  100. // g[v].push_back({u, c});
  101. // }
  102. // auto res = solve(0);
  103. // cout << res;
  104.  
  105. const int lim = 2e9;
  106.  
  107. vector<int> ans = {0, 1};
  108. for (int i = 1; i < lim; i++) {
  109. for (int j = 0; j < ans[i]; j++) {
  110. if (ans.size() < lim) {
  111. ans.push_back(i);
  112. } else {
  113. break;
  114. }
  115. }
  116. }
  117. // for (int i = 1; i < lim; i++) {
  118. // cout << ans[i] << ' ';
  119. // }
  120. cout << ans.back() << endl;
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement