兩個bfs,分別對兩個起點bfs;分別求各自到目標點的距離求最短的距離
hdu2612;
題目鏈結;
題目大意;地圖裡面有ym兩個人,@kfc,#牆,.路,他們兩個人要在地圖裡面找到乙個@kfc,使得兩者到它的距離之和最短;
思路;兩個人;分別對他們bfs求出他們對每個@的距離;最後去找最小距離和的@;
看**;
使用兩個bfs;並分別記錄距離。
但是我wa了很多次;原因就是把dir保留距離的陣列也同時去標記它是否走過;使用了兩個作用;在這裡出錯了;最後再單獨開乙個陣列去標記是否走過;與普通的bfs一樣;
有時候盡量乙個陣列,乙個變數就實現乙個作用;防止出錯
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
struct node
;int n, m;
char mp[210][210];
bool mark[210][210];
int jl[2][210][210];
int dir[4][2]=,,,};
void bfs(int s,int e,int t)}}
}int main()
if(mp[i][j]=='m')}}
bfs(si,sj,0);
bfs(ei,ej,1);
// for(i = 0; i < n; i++)
//
// printf("\n\n");
// for(i = 0; i < n; i++)
//
int minn = 999999999;
for(i = 0; i < n; i++)}}
printf("%d\n",minn*11);
}return
0;}
樹的直徑(兩個bfs)
樹的直徑 樹中的最長鏈 具體思路 隨便找乙個點bfs,然後找到最長的鏈,然後再以找到的點作為起點進行bfs,然後找到的最長的鏈就是樹的直徑。ac include include include include include include include include include inclu...
樹的直徑(兩個bfs)
樹的直徑 樹中的最長鏈 具體思路 隨便找乙個點bfs,然後找到最長的鏈,然後再以找到的點作為起點進行bfs,然後找到的最長的鏈就是樹的直徑。ac include include include include include include include include include inclu...
求兩個時間的差
直接上 注 中的model.recenttime就是你自己要計算的時間 nsstring newtime model.recenttime substringtoindex 19 取特定的字串與系統給的格式匹配 nslog newtime newtime dateand日曆 nstimezone z...