bfs兩個起點求兩者共同的最短距離

2021-07-17 03:25:56 字數 1100 閱讀 7076

兩個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...