C++岛屿问题_c++
C++岛屿问题_搜索_02

//Author:PanDaoxi
#include <iostream>
using namespace std;
//book=标记岛屿是否被搜索过
//e=地图
//n=岛屿数量
//m=桥的数量 
int book[101],e[101][101],n,m;
//计数器:搜索过的岛屿
int sum=0; 
//深搜函数
void dfs(int j){
	cout<<j<<" "; //输出当前所在岛屿 
	sum++;
	if(sum==n) return; //搜索完成 
	//搜索j是否可以去其他岛屿
	for(int i=1;i<=n;i++){
		//1.岛屿:j和i是否相通
		//2.判断岛屿i是否被搜索过
		if(e[i][j]==1&&book[i]==0){
			book[i]=1;
			dfs(i);
		} 
	} 
} 
int main(){
	cin>>n>>m;
	int a,b;
	for(int i=1;i<=m;i++){
		cin>>a>>b;
		e[a][b]=e[b][a]=1;
	}
	book[1]=1; //从1开始搜索
	dfs(1); //开始深搜 
	return 0;
} 

C++岛屿问题_后端_03