Submission #660797

#TimeUsernameProblemLanguageResultExecution timeMemory
660797velislavgarkovJakarta Skyscrapers (APIO15_skyscraper)C++14
0 / 100
1 ms1036 KiB
#include <iostream> #include <vector> #include <queue> using namespace std; const int MAXN=3e4+10; vector <pair <int,int> > v[MAXN]; priority_queue <pair <int,int> > q; int ans[MAXN]; void dejkstra(int start) { ans[start]=0; q.push({0,start}); while (!q.empty()) { int x=q.top().second; if (-q.top().first!=ans[x]) { q.pop(); continue; } q.pop(); for (auto i:v[x]) { if (ans[i.first]==-1 || ans[i.first]>ans[x]+i.second) { ans[i.first]=ans[x]+i.second; q.push({-ans[i.first],i.first}); } } } } int main () { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int n, m, beg, steps; cin >> n >> m; for (int j=0;j<m;j++) { cin >> beg >> steps; int br=0; for (int i=beg;i<n;i+=steps) { v[beg].push_back({i,br}); br++; } br=0; for (int i=beg;i>=0;i-=steps) { v[beg].push_back({i,br}); br++; } } for (int i=0;i<n;i++) ans[i]=-1; dejkstra(0); cout << ans[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...