DFS專題 BFS複習

2021-08-21 21:28:04 字數 2445 閱讀 4710

題意:從起始點出發,遇到坑不走,問能夠到達的點有多少個。

思路:板子題。dfs或者bfs都可以

dfs:

#includeusing namespace std;

#define ll long long

#define clr(a) memset(a,0,sizeof(a))

const int maxn = 1e5+10;

const int inf = 0x3f3f3f3f;

const int n = 30;

int n,m,sum;

int vis[n][n];

int dx[4] = ;

int dy[4] = ;

bool check(int x,int y)

else return true;

}void dfs(int x,int y)

else

}}int main(), };

bool check(int x,int y)

struct node;

queueq;

void bfs(int x,int y)}}

}int main(), };

bool check(int x,int y);

int yy[8]=;

void dfs(int a,int b)

for(int i=0;i<8;i++)

}//0是* 1是@ 0 是牆 1是路

int main()

return ;

} //判斷是否是最後乙個數

long long temp=0;

for(int i=id;i題意:判斷圖中,相同顏色是否能成環。

思路:dfs + 標記

#includeusing namespace std;

#define ll long long

#define clr(a) memset(a,0,sizeof(a))

const int maxn = 1e5+10;

const int inf = 0x3f3f3f3f;

const int n = 55;

int n,m,num,fx,fy;

bool vis[n][n];

char mp[n][n];

int flag = 0;

int dir[2][4] = , };

bool check(int x,int y);

int yy[4]=;

char s[110][110];

int ans=0;

struct nodep[3000];//要大於2500,因為這個wa了一遍。

bool cmp(node a,node b)//按 從小到大的順序排序。

void dfs(int a,int b)

}//這個用於s跑dfs,順便記錄一下每個湖泊的位置和大小。(同乙個湖泊只記錄了一次)

void dfs2(int a,int b)

}//這個dfs 用於填充海洋

void dfs1(int a,int b)

int main() , };

struct node;

bool check(int x,int y)

void bfs()

for(int i=0;i<4;i++)}}

}int main()

}getchar();

for(int i=1;i<=n;i++)

getchar();

}cout<<"board #"int dfs(int m,int n)

int main(void)

return 0;

}

思路:bfs+記錄路徑

#include#include#include#include#includeusing namespace std;

const int max = 1e6+10;

const int inf = 0x3fffffff;

int way[15][15];

int vis[15][15];

struct nodep[210];

int dir[4][2]=;

void bfs(int x,int y)

} }}void print(node a,node b)

} return ;

}int main()

} bfs(1,1);

node pre;

node last;

pre.x=1;pre.y=1;

last.x=5;last.y=5;

print(pre,last);

printf("(4, 4)\n");

return 0;

}

油田(bfs專題)

地質勘探局地質勘探局負責探測地下油層。geosurvcomp每次處理乙個大的矩形區域,並建立乙個網格,將土地劃分為許多方形地塊。然後分別分析每個地塊,使用感測裝置來確定該地塊是否含有石油。一塊含有石油的土地叫做口袋。如果兩個油藏相鄰,則它們屬於同一油層。石油蘊藏量可能相當大,可能包含許多小塊。你的工...

搜尋專題(複習)

bfs採用結構體寫的話怎麼剪枝都超時,採用int型的話可以過,沒弄懂 出了問題 ac include include include include using namespace std int visit 100005 int main if t 0 visit t 1 if t m visit...

DFS和BFS演算法

本質區別 bfs 的重點在於佇列,而 dfs 的重點在於遞迴。這是它們的本質區別。dfs 演算法 是一種利用遞迴 實質上是用棧來儲存未訪問的結點,先進後出 實現的搜尋演算法,直到找到解或走不下去為止。簡單來說,其搜尋過程和 不撞南牆不回頭 樹的先序遍歷 類似。bfs演算法 是一種利用佇列 用佇列來儲...