暴力dfs,唯一要注意的地方就是要标记被访问过的点,防止重复访问
#include<iostream>
using namespace std;
int n; char str[100]; int map[100][100];
int flag[100]; //标记点是否被访问过
void dfs(int x)
{
cout<<str[x];
flag[x]=1;
for(int i=0;i<n;i++)
{
if(map[x][i]!=0&&flag[i]==0)
dfs(i);
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
cin>>str[i];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cin>>map[i][j];
char first;
cin>>first;
for(int i=0;i<n;i++)
{
if(str[i]==first)
dfs(i);
}
return 0;
}