Submission #995452

#TimeUsernameProblemLanguageResultExecution timeMemory
995452BaytoroJakarta Skyscrapers (APIO15_skyscraper)C++17
36 / 100
15 ms5152 KiB
#include <bits/stdc++.h> using namespace std; #define fr first #define sc second #define pb push_back //#define int long long #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(),x.rend() void fopn(string name){ freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout); } #define ll long long const int N=3e4+5; vector<int> g[N]; int n,m; bool used[2005][2005]; int distnce[2005]; void bfs(int x){ queue<pair<int,pair<int,int> > > dq; for(auto it: g[x]){ dq.push(make_pair(it,make_pair(x,0))); used[x][it]=1; } while(!dq.empty()){ int p=dq.front().fr; int d=dq.front().sc.fr; int dist=dq.front().sc.sc; dq.pop(); if(d+p<n){ if(!used[d+p][p]){ dq.push(make_pair(p,make_pair(d+p,dist+1))); distnce[d+p]=min(dist+1,distnce[d+p]); used[d+p][p]=1; } } if(d-p>=0){ if(!used[d-p][p]){ dq.push(make_pair(p,make_pair(d-p,dist+1))); distnce[d-p]=min(dist+1,distnce[d-p]); used[d-p][p]=1; } } for(auto it: g[d]){ if(!used[d][it]){ dq.push(make_pair(it,make_pair(d,dist))); used[d][it]=1; } } } } void solve(){ for(int i=0;i<2005;i++) distnce[i]=1e9; cin>>n>>m; vector<int> b(m),p(m); for(int i=0;i<m;i++){ cin>>b[i]>>p[i]; g[b[i]].pb(p[i]); } distnce[b[0]]=0; bfs(b[0]); if(distnce[b[1]]>1e8) cout<<-1<<endl; else{ cout<<distnce[b[1]]<<endl; } } signed main(){ //fopn("paint"); int t=1;//cin>>t; while(t--) solve(); }

Compilation message (stderr)

skyscraper.cpp: In function 'void fopn(std::string)':
skyscraper.cpp:10:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |  freopen((name+".in").c_str(),"r",stdin);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
skyscraper.cpp:11:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 |  freopen((name+".out").c_str(),"w",stdout);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...