#include<bits/stdc++.h>
using namespace std ;
const int maxn = 3e4+123 ;
priority_queue <pair<int,int> , vector <pair<int,int>> , greater<pair<int,int>> >bfs ;
vector <int> doge[maxn] ;
int n , m ;
bool visited[maxn] ; //exitfrom[maxn][maxn];
void BFS(int t){
while(!bfs.empty()){
int pay=bfs.top().first , ver = bfs.top().second ;
//cout<<ver<<' '<<pay<<' '<<t<<' ' ;
if(ver==t){
cout<<pay ;
return ;
}
bfs.pop() ;
if(!visited[ver]){
visited[ver]=1 ;
for(int i:doge[ver]){
//cout<<i<<' ' ;
for(int verp=ver+i ,cnt=1 ; verp<n ; verp += i , cnt++)
if(!visited[verp])
bfs.push({cnt + pay , verp}) ;
for(int verp=ver-i , cnt=1 ; verp>=0 ; verp-=i , cnt++)
if(!visited[verp])
bfs.push({cnt + pay , verp}) ;
}
}
//cout<<bfs.size()<<'\n';
}
cout<<-1 ;
}
int main(){
cin>>n>>m ;
int loc0 , p0 , loc1 , p1;
cin>>loc0>>p0 ;
doge[loc0].push_back(p0) ;
bfs.push({0,loc0}) ;
cin>>loc1>>p1 ;
for(int i=2 ; i<m ;i++){
int loc , p ;
cin>>loc>>p ;
doge[loc].push_back(p) ;
}
BFS(loc1) ;
}
# | 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... |