您的位置:首页 > 其它

bfs和dfs数组实现

2017-12-19 12:50 267 查看
#include<cstdio>

#include<iostream>

#include<cstring>

#include<algorithm>

#include<queue>

using namespace std;

int d[205][205];

int visit[205];

int Node[205];

int n;

void dfs(int x)

{
printf("%d",Node[x]);
visit[x]=1;
for(int i=0;i<n;i++){
if(!visit[i]&&d[x][i]!=0) {
dfs(i);
}
}

 }

void bfs(int x)

{
memset(visit,0,sizeof(visit));
queue<int> q;
q.push(x);
visit[x]=1;
while(!q.empty()) {
int temp=q.front();
q.pop();
for(int i=0;i<n;i++){
if(!visit[i]&&d[temp][i]==1) {
visit[i]=1; q.push(i);
}
}
printf("%d",Node[temp]);
}

}

int main()

{
printf("请输入点的个数\n");
scanf("%d",&n);
memset(visit,0,sizeof(visit));
memset(d,-1,sizeof(-1));
printf("请输入点\n");
for(int i=0;i<n;i++) {
scanf("%d",&Node[i]);
}
printf("请输入边\n");
while(1) {
int u,v;
scanf("%d%d",&u,&v);
if(u==-1&&v==-1) break;
d[u][v]=1; d[v][u]=1;
}
printf("dfs");
dfs(0);
printf("\n");
printf("bfs");
bfs(0);

 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dfs bfs 遍历