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 N = 3e5 + 7 ;
int n , m ;
int b[N] , p[N] , d[N];
vector<pair<int , int > > adj[N] ;
int dijkstra()
{
memset(d , -1 , sizeof d) ;
priority_queue<pair<int , int > > q ;
q.push({0 , b[0]}) ;
d[ b[0] ] = 0;
while(q.size())
{
int node = q .top().second ;
int dist = -q.top().first ;
q.pop();
for(auto u : adj[node])
{
if(d[u.first]==-1 || dist + u.second < d[u.first])
{
d[u.first] = dist + u.second ;
q.push({-d[u.first] , u.first}) ;
}
}
}
return d[ b[1] ] ;
}
int main()
{
//freopen("in.in" , "r", stdin) ;
cin>>n>>m ;
for(int i = 0 ; i < N ;i++)
b[i] = n;
for(int i= 0 ; i < m ; i++)
{
int A , B;
cin>>A>>B ;
b[ i ] = A;
if(!B)
continue;
for(int j = 0 ; j < n ; j++)
{
if(A==j)
continue;
if(j==A)
continue;
if(abs(A-j)%B==0)
{
adj[A].push_back({j , abs(A-j)/B});
}
}
}
cout<<dijkstra();
return 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... |