Submission #40712

#TimeUsernameProblemLanguageResultExecution timeMemory
40712IvanCJakarta Skyscrapers (APIO15_skyscraper)C++14
57 / 100
521 ms38724 KiB
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#define MAXN 2010
#define MP make_pair
using namespace std;
typedef pair<int,int> ii;
int grafo[MAXN][MAXN];
int origem,destino,n,m,processado[MAXN];
int main(){
	memset(grafo,-1,sizeof(grafo));
	scanf("%d %d",&n,&m);
	n--;
	for(int i=0;i<m;i++){
		int ini,percorre;
		scanf("%d %d",&ini,&percorre);
		if(i == 0) origem = ini;
		if(i == 1){
			destino = ini;
			continue;
		}
		for(int j = 1;ini - percorre*j >= 0;j++){
			if(grafo[ini][ini - percorre*j] == -1){
				grafo[ini][ini - percorre*j] = j;
			}
			else{
				grafo[ini][ini - percorre*j] = min(j,grafo[ini][ini - percorre*j]);
			}
		}
		for(int j = 1;ini + percorre*j <= n;j++){
			if(grafo[ini][ini + percorre*j] == -1){
				grafo[ini][ini + percorre*j] = j;
			}
			else{
				grafo[ini][ini + percorre*j] = min(j,grafo[ini][ini + percorre*j]);
			}
		}
	}
	priority_queue<ii, vector<ii> , greater<ii> > Dijkstra;
	Dijkstra.push(MP(0,origem));
	while(!Dijkstra.empty()){
		ii davez = Dijkstra.top();
		Dijkstra.pop();
		int v = davez.second, percorrido = davez.first;
		if(processado[v]) continue;
		processado[v] = 1;
		if(v == destino	){
			printf("%d\n",percorrido);
			return 0;
		}
		for(int i=0;i<=n;i++){
			if(!processado[i] && grafo[v][i] != -1){
				Dijkstra.push(MP(percorrido + grafo[v][i],i));
			}
		}
	}
	printf("-1\n");
	return 0;
}

Compilation message (stderr)

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:13:22: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d",&n,&m);
                      ^
skyscraper.cpp:17:32: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d",&ini,&percorre);
                                ^
#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...