dfs对图进行遍历
#include<iostream>
using namespace std;
const int N = 1000;
//图的遍历
int visit[N];
int edge[N][N];
int v[N];
int n,e,x,y;
void dfs(int num)
{
cout<<v[num];
visit[num]=1;
for(int i=1;i<=n;i++)
{
if(edge[num][i]==1&&visit[i]==0)
{
dfs(i) ;
}
}
}
int main()
{
cin>>n>>e;
memset(visit,0,sizeof(visit));
for(int i=1;i<=n;i++)
cin>>v[i];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
edge[i][j]=0;
for(int i=1;i<=e;i++)
{
cin>>x>>y;
edge[x][y]=edge[y][x]=1;//这里是对无向图进行遍历
}
dfs(1);
return 0;
}
bfs对图的遍历
#include <iostream>
#include <queue>
using namespace std;
int v[100];
int edge[100][100];
int n,m;
int visited[110];
void bfs(int x)
{
cout<<v[x];
visited[x]=1;
queue<int>q;
q.push(x);
int w;
while(q.size()!=0)
{
w=q.front();
q.pop();
for(int j=1;j<=n;j++)
{
if(edge[w][j]==1&&visited[j]==0)
{
cout<<v[j];
visited[j]=1;
q.push(j);
}
}
}
}
int main()
{
int x,y;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>v[i];
}
for(int i=1;i<=m;i++)
{
cin>>x>>y;
edge[x][y]=edge[y][x]=1;
}
bfs(1);
return 0;
}