Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cstring>
- #include <algorithm>
- #include <cmath>
- #include <vector>
- #include <set>
- #include <map>
- #include <stack>
- #include <queue>
- #include <deque>
- #include <unordered_map>
- #include <numeric>
- #include <iomanip>
- using namespace std;
- #define pii pair<int, int>
- #define FAST ios_base::sync_with_stdio(false); cin.tie(NULL)
- const int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
- const int dl[2] = {1, -1};
- const int MOD = 1e9;
- const int MAX = 100005;
- int n, m, dist[MAX], par[MAX];
- vector<pii> v[MAX]; // {node, weight}
- priority_queue<pii> pq;
- void init_dist(){
- for(int i = 0; i <= n; i++){
- dist[i] = 2e9;
- }
- dist[1] = 0;
- }
- void Dijkstra(){
- pq.push({-1, 1});
- while(!pq.empty()){
- int cur = pq.top().second;
- int d = -pq.top().first;
- // cout << cur << " " << d << "\n";
- pq.pop();
- for(pii a : v[cur]){
- int nxt = a.first;
- int nd = a.second;
- if(d + nd < dist[nxt]){
- dist[nxt] = d + nd;
- par[nxt] = cur;
- pq.push({-(d + nd), nxt});
- }
- }
- }
- }
- int main() {
- FAST;
- //freopen("gravity.in", "r", stdin);
- //freopen("gravity.out", "w", stdout);
- cin >> n;
- for(int i = 1; i <= n; i++){
- v[i % n].push_back(make_pair((i + 1) % n, 1));
- }
- for(int i = 1; i <= n; i++){
- v[i % n].push_back(make_pair((i * 10) % n, 0));
- }
- init_dist();
- Dijkstra();
- cout << dist[0] << "\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement