This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 30010 , MAXM = 30010;
int visited[MAXN] ;
pair<int , int>arr[MAXM] ;
vector< vector<int> >now(MAXN) ;
int main()
{
int n , m ;
cin>>n>>m ;
for(int i = 0 ; i < m ; ++i)
{
cin>>arr[i].first>>arr[i].second;
now[arr[i].first].push_back(i);
}
priority_queue< pair<int , int> , vector< pair<int , int> > , greater< pair<int , int> > >q ;
q.push({0 , arr[0].first});
while(!q.empty())
{
pair<int , int>p = q.top() ;
q.pop() ;
int dist = p.first , idx = p.second ;
if(idx == arr[1].first)
return cout<<dist<<"\n" , 0 ;
if(visited[idx])
continue;
visited[idx] = 1 ;
for(auto &i : now[idx])
{
int cnt = 0 ;
for(int j = idx+arr[i].second ; j < n ; j += arr[i].second)
{
cnt++ ;
if(!visited[j])
q.push({dist + cnt , j});
}
cnt = 0 ;
for(int j = idx - arr[i].second ; j >= 0 ; j -= arr[i].second)
{
cnt++;
if(!visited[j])
q.push({dist + cnt , j});
}
}
}
return cout<<-1<<"\n" , 0 ;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |