제출 #695114

#제출 시각아이디문제언어결과실행 시간메모리
695114AbitoJakarta Skyscrapers (APIO15_skyscraper)C++17
36 / 100
1082 ms65480 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define F first #define S second #define int long long const int N=3e4+5; int a[N],b[N],n,m,dis[N]; vector<pair<int,int>> adj[N]; priority_queue<pair<int,int>> pq; bool vis[N]; void dijkstra(){ pq.push({0,0}); while (!pq.empty()){ pair<int,int> x=pq.top(); x.F*=-1; pq.pop(); if (vis[x.S]) continue; vis[x.S]=true; for (auto u:adj[x.S]){ if (dis[u.F]<=x.F+u.S) continue; dis[u.F]=x.F+u.S; pq.push({-dis[u.F],u.F}); } }return; } int32_t main(){ cin>>n>>m; for (int i=1;i<N;i++) dis[i]=INT_MAX; for (int i=0;i<m;i++) cin>>a[i]>>b[i]; for (int i=0;i<m;i++){ for (int j=0;j<m;j++){ if (i==j) continue; if (abs(a[i]-a[j])%b[i]) continue; adj[i].pb({j,abs(a[i]-a[j])/b[i]}); //cout<<i<<' '<<j<<' '<<abs(a[i]-a[j])/b[i]<<endl; } } dijkstra(); if (dis[1]==INT_MAX) cout<<-1<<endl; else cout<<dis[1]<<endl; return 0; }
#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...