POJ 2488-A Knight & #39; s Journey £. DFS £.
A Knight's Journey
Time Limit:1000 MS |
|
Memory Limit:65536 K |
Total Submissions:31702 |
|
Accepted:10813 |
Description
Background
The knight is getting bZ keys · keys "http://www.bkjia.com/kf/ware/vc/" target = "_ blank" class = "keylink"> keys + Cjxicj4KPHN0cm9uZz5Qcm9ibGVtPC9zdHJvbmc + keys = "pst"> Input
The input begins with a positive integer n in the first line. the following lines contain n test cases. each test case consists of a single line with two positive integers p and q, such that 1 <= p * q <= 26. this represents a p * q chessboard, where p describes how between different square numbers 1 ,..., p exist, q describes how many different square letters exist. these are the first q letters of the Latin alphabet: ,...
Output
The output for every scenario begins with a line ining "Scenario # I:", where I is the number of the scenario starting at 1. then print a single line containing the lexicographically first path that visits all squares of the chessboard with knight moves followed by an empty line. the path shoshould be given on a single line by concatenating the names of the visited squares. each square name consists of a capital letter followed by a number.
If no such path exist, you shoshould output impossible on a single line.
Sample Input
31 12 34 3
Sample Output
Scenario #1:A1Scenario #2:impossibleScenario #3:A1B3C1A2B4C2A3B1C3A4B2C4
Â Ò Â £° ú ú?ó ó Æ £ ¿é?ma= ************************************** p * q µä{{%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ä ämäözözäð ò × î µ % ********************************************************* µäê ± ° ò ° '× öµäð Ë {%^^£;£ *********************************************** £²» äüllæ Ò â Á '''
È»ºóÆäËûµÄûʲôÁË Ö±½ÓÉîËÑ£¬Ëѵ½´ð°¸ÖºóÖ±½Óreturn £»
#include #include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long#define maxn 116#define pp pair
#define INF 0x3f3f3f3f#define max(x,y) ( ((x) > (y)) ? (x) : (y) )#define min(x,y) ( ((x) > (y)) ? (y) : (x) )using namespace std;int n,m,k,ans,dir[8][2]={{-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1},{2,1},{-1,2},{1,2}};bool vis[27][27];int sx[30],sy[30],top,ok;void dfs(int x,int y){if(ok) return ;if(top==n*m){ok=1;for(int i=0;i
=1&&tx<=n&&ty>=1&&ty<=m&&!vis[tx][ty]){vis[tx][ty]=1;sx[top]=tx;sy[top++]=ty;dfs(tx,ty);vis[tx][ty]=0;top--;}}}int main(){int T,cas=1;scanf("%d",&T); while(T--){scanf("%d%d",&n,&m);ok=0;printf("Scenario #%d:\n",cas++);memset(vis,0,sizeof(vis));top=0;vis[1][1]=1;sx[top]=1;sy[top++]=1;dfs(1,1);if(!ok)printf("impossible");puts("");if(T)puts("");}return 0;}