其实bfs本身不难,甚至不需要去学习,只要知道它的特性就可以写出来了。往往,bfs都是用递归做的。递归比循环更容易timeout。所以这次遇到一题bfs,卡时间的就悲剧了。
#include#include #include #include #include #include #include using namespace std;#define N (1000+10)#define INF (1<<30)vector Map[N];int vis[N];int Hash[N];int n,m;int res,ans[N];void bfs(vector vi,int cnt){ int nsize = vi.size(); if(nsize==0) return; if(cnt == m+1){ return;} ++cnt; vector vnext; for(int i=0;i