제출 #972122

#제출 시각아이디문제언어결과실행 시간메모리
972122batsukh2006Jakarta Skyscrapers (APIO15_skyscraper)C++17
36 / 100
1091 ms1188 KiB
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<map>
#include<string>
#include<algorithm>
#include<vector>
#include<string.h>
#include<utility>
#include<set>
#include<cmath>
#include<queue>
#include<deque>
#include<functional>
#include<stack>
#include<limits.h>
#include<iomanip>
#include<unordered_map> 
#include<numeric>
#include<tuple>
#include<bitset>
using namespace std;
#define MOD 1000000007
//#define int long long
#define ss second
#define ff first
#define endl '\n'
signed main(){
    // freopen("file.in", "r", stdin);
    // freopen("file.out", "w", stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    int n,m; cin>>n>>m;
    vector<int> b(m+1),p(m+1);
    for(int i=1; i<=m; i++) cin>>b[i]>>p[i];
    queue<int> q;
    q.push(2);
    vector<bool> vis(m+1);
    vector<int> dp(m+1,1e9);
    dp[2]=0;
    vis[2]=1;
    while(!q.empty()){
    	vector<int> tmp(m+1,1e9);
    	vector<pair<int,int> > v;
    	int need=q.size();
    	while(need--){
    		int c=q.front();
    		q.pop();
    		v.push_back({dp[c],c});
    		q.push(c);
    	}
    	sort(v.begin(),v.end());
    	for(int i=0; i<v.size(); i++){
    		for(int j=i-1; j>=0; j--){
    			if(abs(b[v[i].ss]-b[v[j].ss])%p[v[i].ss]==0){
    				dp[v[i].ss]=min(dp[v[i].ss],abs(b[v[i].ss]-b[v[j].ss])/p[v[i].ss]+dp[v[j].ss]);
    			}
    		}
    	}
    	while(!q.empty()){
    		int c=q.front();
    		q.pop();
    		for(int i=1; i<=m; i++){
    			if(abs(b[i]-b[c])%p[i]==0){
    				tmp[i]=min(tmp[i],abs(b[i]-b[c])/p[i]+dp[c]);
    			}
    		}
    	}
    	for(int i=1; i<=m; i++){
    		if(tmp[i]<dp[i]){
				q.push(i);
				dp[i]=tmp[i];
			}
    	}
    }
    if(dp[1]==1e9) cout<<-1;
    else cout<<dp[1];
    return 0;
}



























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

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:55:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   55 |      for(int i=0; i<v.size(); 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...