제출 #523023

#제출 시각아이디문제언어결과실행 시간메모리
523023DeepessonJakarta Skyscrapers (APIO15_skyscraper)C++17
57 / 100
1097 ms66496 KiB
#include <bits/stdc++.h> #define MAX 31000 typedef std::pair<short,short> pii; ///Skyscraper .first, level .second typedef std::pair<pii,int> ppi; typedef int bits; int main() { std::ios::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); std::set<bits> visitou; int N,M; std::cin>>N>>M; bool cachorro[N]={}; std::vector<int> poder[N]; int ha[M],hb[M]; for(int i=0;i!=M;++i){ int a,b; std::cin>>a>>b; cachorro[a]=true; poder[a].push_back(b); ha[i]=a; hb[i]=b; } pii origem = {ha[0],hb[0]}; pii fim = {ha[1],hb[1]}; std::deque<ppi> deque; deque.push_back({origem,0}); int count=0; while(deque.size()){ auto ___ = deque.front(); auto __ = ___.first; deque.pop_front(); if(__.first<0||__.first>=N)continue; if(!visitou.insert(*((bits*)&__)).second)continue; if(__==fim){ std::cout<<___.second<<"\n"; return 0; } if(__.first+__.second<N) deque.push_back({{__.first+__.second,__.second},___.second+1}); if(__.first-__.second>=0) deque.push_back({{__.first-__.second,__.second},___.second+1}); if(cachorro[__.first]){ cachorro[__.first]=false; for(auto&x:poder[__.first]) deque.push_front({{__.first,x},___.second}); } } std::cout<<"-1\n"; }

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

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:35:30: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
   35 |         if(!visitou.insert(*((bits*)&__)).second)continue;
      |                             ~^~~~~~~~~~~
skyscraper.cpp:29:9: warning: unused variable 'count' [-Wunused-variable]
   29 |     int count=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...