| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
204MS 快速高效 优美易读 的 DFS ORZ WZCIn Reply To:双向dfs无压力 219MS AC!! Posted by:wzc1995 at 2012-08-10 19:26:38 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <map>
#include <algorithm>
using namespace std;
struct _________
{int ____,_____;};
struct __________
{_________ _[5];}___________________,____________________;
map<int , bool> _____________;
bool ___________[10][10];
int ________________[] = {-1, 1, 0, 0};
int _________________[] = { 0, 0, 1,-1};
inline bool ______________(const _________ &_______ ,const _________ &________)
{
if(_______.____ != ________.____)
return _______.____ < ________.____;
return _______._____ < ________._____;
}
inline bool _______________(int ____, int _____)
{
if(____ >= 1 && _____ >= 1 && ____ <= 8 && _____ <= 8)
return true;
return false;
}
inline bool _______________________(const __________ &____________)
{
__________ ___________________ = ____________;
sort(___________________._+1,___________________._+5,______________);
int _____________________ = 1,__________________________(0);
for(int ___ = 1; ___ <= 4; ___++)
{
__________________________ += ___________________._[___].____*_____________________;
_____________________ *= 10;
__________________________ += ___________________._[___]._____*_____________________;
_____________________ *= 10;
}
return _____________[__________________________];
}
inline void ________________________(const __________ &____________)
{
__________ ___________________ = ____________;
sort(___________________._+1,___________________._+5,______________);
int _____________________ = 1,__________________________(0);
for(int ___ = 1; ___ <= 4; ___++)
{
__________________________ += ___________________._[___].____*_____________________;
_____________________ *= 10;
__________________________ += ___________________._[___]._____*_____________________;
_____________________ *= 10;
}
_____________[__________________________] = true;
}
inline void __________________(const __________ &_______,int ______________________)
{
________________________(_______);
if(______________________ == 4) return;
memset(___________,0,sizeof ___________);
for(int ___ = 1; ___ <= 4; ___++)
___________[_______._[___].____][_______._[___]._____] = true;
for(int ___ = 1; ___ <= 4; ___++)
for(int ______ = 0; ______ < 4; ______++)
if(_______________(_______._[___].____+________________[______],_______._[___]._____+_________________[______]))
{
if(___________[_______._[___].____+________________[______]][_______._[___]._____+_________________[______]])
{
if(_______________(_______._[___].____ + 2*________________[______],_______._[___]._____ + 2*_________________[______])&&___________[_______._[___].____ + 2*________________[______]][_______._[___]._____ + 2*_________________[______]]==0)
{
__________ __ = _______;
__._[___].____ = _______._[___].____ + 2*________________[______];
__._[___]._____ = _______._[___]._____ + 2*_________________[______];
__________________(__,______________________+1);
}
}
else
{
__________ __ = _______;
__._[___].____ = _______._[___].____ + ________________[______];
__._[___]._____ = _______._[___]._____ + _________________[______];
__________________(__,______________________+1);
}
}
}
inline bool _________________________(const __________ &_______,int ______________________)
{
if(_______________________(_______))
return true;
if(______________________ == 4) return false;
memset(___________,0,sizeof ___________);
for(int ___ = 1; ___ <= 4; ___++)
___________[_______._[___].____][_______._[___]._____] = true;
for(int ___ = 1; ___ <= 4; ___++)
for(int ______ = 0; ______ < 4; ______++)
if(_______________(_______._[___].____+________________[______],_______._[___]._____+_________________[______]))
{
if(___________[_______._[___].____+________________[______]][_______._[___]._____+_________________[______]])
{
if(_______________(_______._[___].____ + 2*________________[______],_______._[___]._____ + 2*_________________[______])&&___________[_______._[___].____ + 2*________________[______]][_______._[___]._____ + 2*_________________[______]]==0)
{
__________ __ = _______;
__._[___].____ = _______._[___].____ + 2*________________[______];
__._[___]._____ = _______._[___]._____ + 2*_________________[______];
if(_________________________(__,______________________+1))
return true;
}
}
else
{
__________ __ = _______;
__._[___].____ = _______._[___].____ + ________________[______];
__._[___]._____ = _______._[___]._____ + _________________[______];
if(_________________________(__,______________________+1))
return true;
}
}
return false;
}
int main()
{
while(~scanf("%d%d",&___________________._[1].____,&___________________._[1]._____))
{
_____________.clear();
for(int ___ = 2; ___ <= 4; ___++)
scanf("%d%d",&___________________._[___].____,&___________________._[___]._____);
for(int ___ = 1; ___ <= 4; ___++)
scanf("%d%d",&____________________._[___].____,&____________________._[___]._____);
__________________(___________________,0);
if(_________________________(____________________,0)) puts("YES");
else puts("NO");
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator