제출 #1310921

#제출 시각아이디문제언어결과실행 시간메모리
1310921paulllolJakarta Skyscrapers (APIO15_skyscraper)C++20
57 / 100
268 ms4700 KiB
#include<bits/stdc++.h>
using namespace std;
bool vs[30001];
short n,m,a,b,s0,s1,cnt;
vector<short> z[30001];
priority_queue<pair<short,short>,vector<pair<short,short>>,greater<pair<short,short>>> pq;
int main(){
    cin.tie(NULL)->sync_with_stdio(false);
    cin>>n>>m;
    for(short i=0;i<m;i++){
        cin>>a>>b;
        z[a].emplace_back(b);
        if(i==0){
            s0=a;
        }
        if(i==1){
            s1=a;
        }
    }
    pq.emplace(make_pair(0,s0));
    while(!pq.empty()){
        a=pq.top().first;
        b=pq.top().second;
        pq.pop();
        if(vs[b]==0){
            vs[b]=1;
            if(b==s1){
                cout<<a;
                return 0;
            }
            for(short i=0;i<z[b].size();i++){
                cnt=1;
                for(short j=b+z[b][i];j<n;j+=z[b][i]){
                    if(vs[j]==0){
                        pq.emplace(make_pair(a+cnt,j));
                    }
                    cnt+=1;
                }
                cnt=1;
                for(short j=b-z[b][i];j>=0;j-=z[b][i]){
                    if(vs[j]==0){
                        pq.emplace(make_pair(a+cnt,j));
                    }
                    cnt+=1;
                }
            }
        }
    }
    cout<<"-1";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...