Advertisement
Vince14

Small Multiple

Feb 25th, 2023
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.56 KB | Source Code | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <cstring>
  4. #include <algorithm>
  5. #include <cmath>
  6. #include <vector>
  7. #include <set>
  8. #include <map>
  9. #include <stack>
  10. #include <queue>
  11. #include <deque>
  12. #include <unordered_map>
  13. #include <numeric>
  14. #include <iomanip>
  15. using namespace std;
  16. #define pii pair<int, int>
  17. #define FAST ios_base::sync_with_stdio(false); cin.tie(NULL)
  18. const int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
  19. const int dl[2] = {1, -1};
  20. const int MOD = 1e9;
  21. const int MAX = 100005;
  22.  
  23.  
  24. int n, m, dist[MAX], par[MAX];
  25. vector<pii> v[MAX]; // {node, weight}
  26. priority_queue<pii> pq;
  27.  
  28. void init_dist(){
  29.     for(int i = 0; i <= n; i++){
  30.         dist[i] = 2e9;
  31.     }
  32.     dist[1] = 0;
  33. }
  34.  
  35. void Dijkstra(){
  36.     pq.push({-1, 1});
  37.     while(!pq.empty()){
  38.         int cur = pq.top().second;
  39.         int d = -pq.top().first;
  40.         // cout << cur << " " << d << "\n";
  41.         pq.pop();
  42.         for(pii a : v[cur]){
  43.             int nxt = a.first;
  44.             int nd = a.second;
  45.             if(d + nd < dist[nxt]){
  46.                 dist[nxt] = d + nd;
  47.                 par[nxt] = cur;
  48.                 pq.push({-(d + nd), nxt});
  49.             }
  50.         }
  51.     }
  52. }
  53.  
  54.  
  55. int main() {
  56.     FAST;
  57.     //freopen("gravity.in", "r", stdin);
  58.     //freopen("gravity.out", "w", stdout);
  59.     cin >> n;
  60.     for(int i = 1; i <= n; i++){
  61.         v[i % n].push_back(make_pair((i + 1) % n, 1));
  62.     }
  63.     for(int i = 1; i <= n; i++){
  64.         v[i % n].push_back(make_pair((i * 10) % n, 0));
  65.     }
  66.     init_dist();
  67.     Dijkstra();
  68.     cout << dist[0] << "\n";
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement