제출 #838319

#제출 시각아이디문제언어결과실행 시간메모리
8383198pete8Jakarta Skyscrapers (APIO15_skyscraper)C++14
0 / 100
67 ms131892 KiB
#include<iostream> #include<stack> #include<map> #include<vector> #include<string> #include<unordered_map> #include <queue> #include<cstring> #include<limits.h> #include<cmath> #include<set> #include<algorithm> #include<bitset> using namespace std; #define ll long long #define f first #define endl "\n" #define s second #define pii pair<int,int> #define ppii pair<int,pii> #define pb push_back #define all(x) x.begin(),x.end() #define F(n) for(int i=0;i<n;i++) #define lb lower_bound #define p push #define fastio ios::sync_with_stdio(false);cin.tie(NULL); using namespace std; const int mxn=3*1e4,mod=998244353,lg=42,root=80; void setIO(string name) { ios_base::sync_with_stdio(0); cin.tie(0); freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout); } int dist[(2*mxn*root)+10]; vector<pii>adj[(2*mxn*root)+10]; bitset<(2*mxn*root)+10>vis; int n,m; //make dummy node // n orginal + n node for each root(n) //node more than root id = mxn*ith+starting point void init(){ for(int i=1;i<root;i++){ for(int j=0;j<n;j++)adj[(mxn*i)+j].pb({j,0});//going down } for(int i=1;i<root;i++){ for(int j=i;j<n;j+=i){ //buid=ld edge for each i adj[(mxn*i)+j].pb({(mxn*i)+j-i,1}); adj[(mxn*i)+j-i].pb({(mxn*i)+j,1}); } } } int32_t main(){ fastio cin>>n>>m; int end; init(); for(int i=0;i<=mxn*root*2;i++)dist[i]=1e8; priority_queue<pii,vector<pii>,greater<pii>>pq; for(int i=0;i<m;i++){ int st,p;cin>>st>>p; if(i==1)end=st; if(i==0)pq.push({0,st}),dist[st]=0; if(p<=root)adj[st].pb({(p*mxn)+st,0}); else{ for(int j=1;(j*p)+st<n;j+=p){ adj[st].pb({(j*p)+st,j}); adj[(j*p)+st].pb({st,j}); } for(int j=1;st-(j*p)>=0;j+=p){ adj[st].pb({st-(j*p),j}); adj[st-(j*p)].pb({st,j}); } //connect normal edge } //input } //dijkstra while(!pq.empty()){ int cur=pq.top().s; pq.pop(); if(vis[cur])continue; for(auto i:adj[cur]){ if(dist[i.f]>dist[cur]+i.s){ dist[i.f]=dist[cur]+i.s; pq.push({dist[i.f],i.f}); } } } cout<<((dist[end]==1e8)?-1:dist[1]); }

컴파일 시 표준 에러 (stderr) 메시지

skyscraper.cpp: In function 'void setIO(std::string)':
skyscraper.cpp:31:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   31 |  freopen((name+".in").c_str(),"r",stdin);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
skyscraper.cpp:32:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   32 |  freopen((name+".out").c_str(),"w",stdout);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
skyscraper.cpp: In function 'int32_t main()':
skyscraper.cpp:90:21: warning: 'end' may be used uninitialized in this function [-Wmaybe-uninitialized]
   90 |     cout<<((dist[end]==1e8)?-1:dist[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...