Submission #405864

#TimeUsernameProblemLanguageResultExecution timeMemory
405864A_DJakarta Skyscrapers (APIO15_skyscraper)C++14
57 / 100
1085 ms65092 KiB
#include<bits/stdc++.h> #define int long long #define ii pair<int,int> #define F first #define S second using namespace std; const int N=3e4+100; vector<int> vec[N]; unordered_map<int,int> vis[N]; int dis,st,n; deque<ii> deq; bool in(int x) { return 0<=x && x<n; } void fix(int v,int w) { if(in(v+w)&&(vis[v+w].count(w)==0||vis[v+w][w]>vis[v][w]+1)){ // cout<<5<<endl; vis[v+w][w]=vis[v][w]+1; deq.push_back({v+w,w}); } if(in(v-w)&&(vis[v-w].count(w)==0||vis[v-w][w]>vis[v][w]+1)){ // cout<<5<<endl; vis[v-w][w]=vis[v][w]+1; deq.push_back({v-w,w}); } } int bfs() { deq.push_back({st,0}); while(deq.empty()==0){ int v=deq[0].F; int w=deq[0].S; deq.pop_front(); if(v==dis)return vis[v][w]; fix(v,w); // cout<<v<<" "<<w<<endl; for(auto x:vec[v]){ if(vis[v].count(x)==1){ continue; } vis[v][x]=vis[v][w]; fix(v,x); // cout<<v<<" "<<x<<endl; } vec[v].clear(); } return -1; } main() { /* int ans=0; int cnt=1; for(int i=1;i<=3e4;i+=cnt){ cnt++; ans+=3e4; } cout<<ans<<endl; */ int m; cin>>n>>m; int x,y; cin>>x>>y; vis[x][0]=0; vec[x].push_back(y); st=x; cin>>x>>y; vec[x].push_back(y); dis=x; m-=2; while(m--){ cin>>x>>y; vec[x].push_back(y); } cout<<bfs()<<endl; } /* 5 3 0 2 1 1 4 1 */

Compilation message (stderr)

skyscraper.cpp:51:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   51 | main()
      | ^~~~
#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...