您的位置:首页 > 其它

dfs与bfs实现

2014-04-18 10:49 417 查看




一、深度优先算法

v0->v1>v3->v7>v4->v2->v5->v6

#include <iostream>
using namespace std;
int visited[10];
int arr[10][10];
void init()
{
memset(visited,0,sizeof(int)*10);
memset(arr,0,sizeof(int)*100);
}
void dfs(int nn,int num)
{
int i;
visited[nn]=1;
cout<<nn<<" ";
for(i=0;i<num;i++)
{
if((arr[nn][i]>0)&&(!visited[i]))
{

dfs(i,num);
}
}
}
int main()
{
int t,m,n;
int i,j;
cin>>t;
init();
for(i=0;i<t;i++)
{
cin>>m>>n;
arr[m]
=1;
arr
[m]=1;
}

for(i=0;i<t;i++)
{
if(!visited[i])
{
dfs(i,t);
}
}
return 0;
}



二、广度优先算法

v0->v1->v2->v3->v4->v5->v6->v7

#include <iostream>
#include <queue>
using namespace std;

int visited[10];
int arr[10][10];
queue<int> dqueue;

void init()
{
memset(visited,0,sizeof(int)*10);
memset(arr,0,sizeof(int)*100);
}

int main()
{
int t,m,n;
int i,j;
int x;
cin>>t;
for(i=0;i<t;i++)
{
cin>>m>>n;
arr[m]
=1;
arr
[m]=1;
}
for(i=0;i<t;i++)
{
if(!visited[i])
{
visited[i]=1;
dqueue.push(i);
while(!dqueue.empty())
{
x=dqueue.front();
cout<<dqueue.front()<<" ";
dqueue.pop();

for(j=0;j<t;j++)
{
if(arr[x][j]&&(!visited[j]))
{
visited[j]=1;
dqueue.push(j);
}
}

}
}
}
return 0;
}


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