模板-宽度优先搜索的前向星实现

Posted Pyl0j

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模板-宽度优先搜索的前向星实现相关的知识,希望对你有一定的参考价值。

  接上篇。这次是bfs。不过使用的时候要注意别被环坑了!上代码。模板仅供参考。

 1 #include <cstdio>
 2 #include <vector>
 3 using namespace std;
 4 
 5 const int MAXN=100;
 6 int m,n;
 7 struct node {
 8     int to;
 9     int w;
10 };
11 vector <node> map[MAXN];
12 bool s[MAXN]={false};
13 int que[MAXN];
14 
15 void bfs(int x) {
16     int head=0,tail=0,cur;
17     que[tail++]=x;
18     s[x]=true;
19     while (head<tail && tail<n) {
20         cur=que[head];
21         vector <node>::iterator it;
22         for (it=map[cur].begin();it!=map[cur].end();it++) {
23             node tmp= *it;
24             if (!s[tmp.to]) {
25                 s[tmp.to]=true;
26                 que[tail++]=tmp.to;
27             }
28             if (tail>=n) break;
29         }
30         head++;
31     }
32 }
33 
34 int main() {
35     scanf("%d%d",&m,&n);
36     int k,i,j,w;
37     for (k=1;k<=m;k++) {
38         scanf("%d%d%d",&i,&j,&w);
39         node e;
40         e.to=j;
41         e.w=w;
42         map[i].push_back(e);
43     }
44     bfs(1);
45     for (i=0;i<n&&que[i]!=0;i++) printf("%d\n",que[i]);
46     return 0;
47 }

 

以上是关于模板-宽度优先搜索的前向星实现的主要内容,如果未能解决你的问题,请参考以下文章

模板-前向星的vector实现

模板链式前向星

最短路Dijkstra+ 链式前向星+ 堆优化(优先队列)

前向星和链式前向星

链式前向星模板

模板前向星 SPFA求最短(长)路