이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
const int MAX = 2010 ;
int visited[MAX] ;
pair<int , int>arr[MAX] ;
vector< vector<int> >now(MAX) ;
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 == 1)
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++ , q.push({dist+cnt , j});
cnt = 0 ;
for(int j = idx - arr[i].second ; j >= 0 ; j -= arr[i].second)
cnt++ , 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... |