题目如题。题解如题。
由于目标点最多只有4个,先bfs出俩俩最短路(包括起点),再dfs最短路。)0s1A;(当年弱跪杭州之题,现看如此简单)
#include
#include
#include
#include
#include
using namespace std; struct point { int x,y; int cnt; }; char a[105][105]; vector
po; int n,m;int k; int mindis[10][10]; int vis[105][105]; int f[4][2]={0,1,0,-1,1,0,-1,0}; int bfs(int s,int t) { memset(vis,0,sizeof(vis)); queue
q; po[s].cnt=0; po[t].cnt=-1; q.push(po[s]); vis[po[s].x][po[s].y]=1; while(!q.empty()) { point cur=q.front(); q.pop(); point next; for(int i=0;i<4;i++) { next.x=cur.x+f[i][0]; next.y=cur.y+f[i][1]; if(next.x>=0&&next.x
=0&&next.y
=mins)return ; if(lev==k) { if(sumdis