码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-10-07 20:42:42      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:break   void   iter   can   前向星   for   const   scanf   scan   

  接上篇。这次是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 }

 

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

标签:break   void   iter   can   前向星   for   const   scanf   scan   

原文地址:http://www.cnblogs.com/wuyuema/p/7635623.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!