标签:limit node problem pac front rsa push his ase
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 11408 Accepted Submission(s): 6700
1 /* 2 Name: hdu--1372--Knight Moves 3 Copyright: ?2017 日天大帝 4 Author: 日天大帝 5 Date: 30/04/17 20:31 6 Description: bfs 7 */ 8 #include<iostream> 9 #include<queue> 10 #include<cstring> 11 #include<string> 12 using namespace std; 13 int bfs(); 14 struct node{ 15 int x,y,ct; 16 }s,e; 17 queue<node> q; 18 int vis[10][10]; 19 int ans; 20 int dir[8][2]={-2,1, -1,2, 1,2, 2,1, 2,-1, 1,-2, -1,-2, -2,-1}; 21 int main(){ 22 ios::sync_with_stdio(false); 23 24 string str1,str2; 25 while(cin>>str1>>str2){ 26 s.x = str1.at(0) - ‘a‘; 27 s.y = str1.at(1) - 48-1; 28 e.x = str2.at(0) - ‘a‘; 29 e.y = str2.at(1) - 48-1; 30 ans = 0; 31 memset(vis,0,sizeof(vis)); 32 cout<<"To get from "<<str1<<" to "<<str2<<" takes "<<bfs()<<" knight moves."<<endl; 33 } 34 return 0; 35 } 36 int bfs(){ 37 while(!q.empty())q.pop(); 38 s.ct = 0; 39 vis[s.x][s.y] = 1; 40 q.push(s); 41 node a,temp; 42 while(!q.empty()){ 43 temp = q.front();q.pop(); 44 if(temp.x == e.x && temp.y == e.y){ 45 return temp.ct; 46 } 47 for(int i=0; i<8; ++i){ 48 a = temp; 49 a.x += dir[i][0]; 50 a.y += dir[i][1]; 51 if(a.x<0 || a.y<0 || a.x >=8 || a.y >= 8 || vis[a.x][a.y])continue; 52 vis[a.x][a.y] = 1; 53 a.ct++; 54 q.push(a); 55 } 56 } 57 return -1; 58 }
标签:limit node problem pac front rsa push his ase
原文地址:http://www.cnblogs.com/rtdd/p/6790371.html