链式前向星存储实现BFS
2016-11-24 16:45
423 查看
代码:
/************************************************************************* > File Name: store.cpp > Author: SIU > Created Time: 2016年11月24日 星期四 13时34分39秒 ************************************************************************/ #include<cstdio> #include<iostream> #include<cstring> using namespace std; const int V=1000; const int E=10000; int cnt=0; struct Edge { int next; int to; //int w; }; Edge edge[E]; int Head[V]; void add(int u,int v) { //edge[cnt].w=w; edge[cnt].to=v; edge[cnt].next=Head[u]; Head[u]=cnt++; return ; } struct node { int x; int count; }que[10010]; int main() { int en,vn,s,e; scanf("%d%d%d%d",&vn,&en,&s,&e); int s1,e1; memset(Head,-1,sizeof(Head)); for(int i=1;i<=en;i++) { scanf("%d%d",&s1,&e1); add(s1,e1); } /*for(int i=1;i<=vn;i++) { for(int j=Head[i];j!=-1;j=edge[j].next) { printf("%d %d\n",i,edge[j].to); } }*/ int visit[10010]; memset(visit,0,sizeof(visit)); int head=1,tail=1; que[tail].x=s; que[tail].count=0; visit[s]=1; tail++; int flag=0; while(head<tail) { for(int i=Head[head];i!=-1;i=edge[i].next) { if(visit[edge[i].to]==0) { que[tail].x=edge[i].to; que[tail].count=que[head].count+1; visit[que[tail].x]=1; if(que[tail].x==e) { flag=1; break; } tail++; } } if(flag==1) break; head++; } printf("%d\n",que[tail].count); return 0; }
PS:我是作为有向图做的
相关文章推荐
- DFS和BFS链式前向星的实现
- (原创)基于关系数据库系统链式存储的树型结构数据,求某结点下的子树所有结点算法(t-sql语言实现)
- 二叉树的链式存储结构 C++代码实现
- 二叉树-链式存储-Java实现(未完待续)
- 集合的链式存储及操作实现
- 边存储结构体:链式前向星
- 树型结构数据在关系数据库中用链式存储相关查询实现
- 线性结构的顺序存储和链式存储的实现代码(二)
- 栈-链式存储-Java实现
- 循环链表-链式存储-Java实现
- 采用链式存储实现队列的初始化、入队、出队操作。
- 栈---链式存储实现
- 线性表的链式存储结构之单链表类的实现_Java
- 线性表的链式存储结构之单链表结点类的实现_Java
- 队列- 链式存储-Java实现
- PHP实现线性表的链式存储
- java实现树(链式存储)
- 哈夫曼树链式存储及简单哈夫曼编码VB实现
- 队列的链式存储结构及实现
- 线性结构的顺序存储和链式存储的实现代码(一)