제출 #83301

#제출 시각아이디문제언어결과실행 시간메모리
83301farukkastamonudaJakarta Skyscrapers (APIO15_skyscraper)C++14
57 / 100
1077 ms112608 KiB
#include <bits/stdc++.h>
#define li 30005
#define inf 10000000000009
#define md 1000000007
#define lo long long
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define ii pair<lo int,lo int>
using namespace std;
lo int n,m,B[li],P[li],dist[li];
set<lo int> S[li];
vector< pair<lo int,lo int> > v[li];
int vis[li];
priority_queue< pair<lo int,lo int> > q;
void bfs(){
	for(int i=0;i<n;i++) dist[i]=inf;
	q.push(mp(0,B[0]));
	while(!q.empty()){
		ii temp=q.top();
		q.pop();
		int seh=temp.se;
		lo int cst=-temp.fi;
		if(dist[seh]<=cst) continue;
		dist[seh]=cst;
		for(int i=0;i<(int)v[seh].size();i++){
			int go=v[seh][i].fi;
			lo int para=v[seh][i].se;
			if(dist[go]>para+cst){
				//dist[go]=para+cst;
				q.push(mp(-(para+cst),go));
			}
		}
	}
}
int main(){
	scanf("%lld %lld",&n,&m);
	for(int i=0;i<m;i++){
		scanf("%lld %lld",&B[i],&P[i]);
		S[B[i]].insert(P[i]);
	}
	for(int i=0;i<n;i++){
		for(auto e:S[i]){
			for(int j=i+e;j<n;j+=e){
				v[i].pb(mp(j,(j-i)/e));
				if(S[j].lower_bound(e)!=S[j].end() && *S[j].lower_bound(e)==e) break;
			}
		}
	}
	for(int i=0;i<n;i++){
		for(auto e:S[i]){
			for(int j=i-e;j>=0;j-=e){
				v[i].pb(mp(j,(i-j)/e));
				if(S[j].lower_bound(e)!=S[j].end() && *S[j].lower_bound(e)==e) break;
			}
		}
	}
	bfs();
	if(dist[B[1]]==inf) printf("-1\n");
	else printf("%lld\n",dist[B[1]]);
	return 0;
}

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

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:38:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld %lld",&n,&m);
  ~~~~~^~~~~~~~~~~~~~~~~~~
skyscraper.cpp:40:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld %lld",&B[i],&P[i]);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#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...