Skip to content

Instantly share code, notes, and snippets.

@diego9627
Created October 24, 2012 03:40
Show Gist options
  • Save diego9627/3943534 to your computer and use it in GitHub Desktop.
Save diego9627/3943534 to your computer and use it in GitHub Desktop.
Curiosity
#include<cstdio>
#include<iostream>
#include<queue>
#define MAX 2147483647
using namespace std;
int minimo[1001][1001];
struct coord{
int x;
int y;
};
int main(){
int N,M,K,i,j,d;
coord inicio,fin,mov[1000],aux,aux2;
queue<coord> q;
cin >> N >> M >> K;
cin >> inicio.x >> inicio.y;
cin >> fin.x >> fin.y;
for(i=0;i<K;i++){
cin >> mov[i].x >> mov[i].y;
}
for(i=1;i<=N;i++){
for(j=1;j<=M;j++){
minimo[i][j]=MAX;
}
}
minimo[inicio.x][inicio.y]=0;
q.push(inicio);
while(!q.empty()){
aux=q.front();
if(aux.x==fin.x&&aux.y==fin.y){
break;
}
d=minimo[aux.x][aux.y]+1;
for(i=0;i<K;i++){
aux2.x=aux.x+mov[i].x;
aux2.y=aux.y+mov[i].y;
if(aux2.x>0&&aux2.x<=N&&aux2.y>0&&aux2.y<=M){
if(minimo[aux2.x][aux2.y]>d){
minimo[aux2.x][aux2.y]=d;
q.push(aux2);
}
}
}
q.pop();
}
if(minimo[fin.x][fin.y]==MAX) cout << -1;
else cout << minimo[aux.x][aux.y];
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment