#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
queue<int> q;
struct Graph
{
int vertex[50]={0};
int edge[50][50]={{0,0}};
int ne,nv;
}g;
int visited[50]={0};
void DFS(Graph G,int v)
{
if(!visited[v])
{
visited[v]=1;
cout<<G.vertex[v];
for(int i=0;i<G.nv;i++)
if(!visited[i]&&G.edge[v][i])
DFS(G,i);
}
}
void BFS(Graph G,int v)
{
int tmp;
if(!visited[v])
{
q.push(G.vertex[v]);
visited[v]=1;
}
while(!q.empty())
{
cout<<q.front();
tmp=q.front();
q.pop();
for(int i=0;i<G.nv;i++)
{
if(!visited[i]&&G.edge[tmp][i])
{
q.push(G.vertex[i]);
visited[i]=1;
}
}
}
}
int main()
{
int a,b;
cin>>g.nv>>g.ne;
for(int i=0;i<g.nv;i++)
g.vertex[i]=i;
for(int i=0;i<g.ne;i++)
{
cin>>a>>b;
g.edge[a][b]=g.edge[b][a]=1;
}
DFS(g,0);
memset(visited,0,50);
cout<<endl;
BFS(g,0);
cout<<endl;
return 0;
}
图的BFS,DFS(邻接表)
最新推荐文章于 2019-06-02 21:07:23 发布