
Untitled
By: a guest on
Apr 25th, 2012 | syntax:
C++ | size: 2.34 KB | hits: 18 | expires: Never
#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
class saati
{
public:
int minuti,saat,potezi;
};
int main()
{
saati od,za;
cin>>od.saat>>od.minuti;
cin>>za.saat>>za.minuti;
od.potezi=0;
za.potezi=0;
queue <saati> q;
bool mat[30][65];
memset(mat,false,sizeof(mat));
mat[od.saat+1][od.minuti+1]=true;
q.push(od);
while(!q.empty())
{
saati tmp=q.front();
if(tmp.minuti==60)
{
tmp.minuti=0;
tmp.saat++;
}
if(tmp.minuti==-1)
{
tmp.minuti=59;
tmp.saat--;
}
if(tmp.saat==24)
tmp.saat=0;
if(tmp.saat==-1)
tmp.saat=23;
if(tmp.minuti==za.minuti&&tmp.saat==za.saat)
{
cout><<tmp.potezi<<endl;
return 0;
}
q.pop();
saati tmp1=tmp;
tmp1.saat++;
tmp1.potezi++;
if(mat[tmp1.saat+1][tmp1.minuti+1]==false)
q.push(tmp1),
mat[tmp1.saat+1][tmp1.minuti+1]=true;
tmp1=tmp;
tmp1.saat--;
tmp1.potezi++;
if(mat[tmp1.saat+1][tmp1.minuti+1]==false)
q.push(tmp1),
mat[tmp1.saat+1][tmp1.minuti+1]=true;
tmp1=tmp;
tmp1.minuti++;
tmp1.potezi++;
if(mat[tmp1.saat+1][tmp1.minuti+1]==false)
q.push(tmp1),
mat[tmp1.saat+1][tmp1.minuti+1]=true;
tmp1=tmp;
tmp1.minuti--;
tmp1.potezi++;
if(mat[tmp1.saat+1][tmp1.minuti+1]==false)
q.push(tmp1),
mat[tmp1.saat+1][tmp1.minuti+1]=true;
}
return 0;
}