Submission #1264178

#TimeUsernameProblemLanguageResultExecution timeMemory
1264178elotelo966Jakarta Skyscrapers (APIO15_skyscraper)C++20
0 / 100
3 ms4936 KiB
#include <bits/stdc++.h>
using namespace std;
 
#define int long long
#define OYY LLONG_MAX
#define faster ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define fi first
#define se second
#define FOR for(int i=1;i<=n;i++)
#define mid (start+end)/2
#define pb push_back
#define lim 200005

int n,m;

int dizi[lim][2];

vector<pair<int,int>> v[lim];

int vis[lim],dist[lim];

inline void dij(){
	for(int i=1;i<=m;i++){
		vis[i]=0;
		dist[i]=LLONG_MAX;
	}
	dist[1]=0;
	priority_queue<pair<int,int>> pq;
	pq.push({0,1});
	while(pq.size()){
		int node=pq.top().se;
		pq.pop();
		if(vis[node])continue;
		vis[node]=1;
		for(auto go:v[node]){
			if(dist[node]!=LLONG_MAX && dist[go.fi]>dist[node]+go.se){
				dist[go.fi]=dist[node]+go.se;
				pq.push({-dist[go.fi],go.fi});
			}
		}
	}
}

int32_t main(){
	faster
	cin>>n>>m;
	
	for(int i=1;i<=m;i++){
		cin>>dizi[i][0]>>dizi[i][1];
	}
	
	for(int i=1;i<=m;i++){
		for(int j=1;j<=m;j++){
			if(i==j)continue;
			int tut=abs(dizi[i][0]-dizi[j][0]);
			if(tut%dizi[i][1])continue;
			v[i].pb({j,tut/dizi[i][1]});
		}
	}
	
	dij();
	
	cout<<dist[2]<<'\n';
	
	return 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...