#include<iostream>
//蓝桥第9届 c语言c组第9题
//小朋友的崇拜圈
//有向图找环 dfs
using namespace std;
int map[100][100]={0}; //邻接矩阵
int visit[100]={0}; // 状态数组
int path[100]; //环的元素
int m=0;
int v=30; //点的个数
void dfs(int k,int parent){
path[m++]=k;
visit[k]=1; //正在访问
for(int i=1;i<=v;i++){
if(map[k][i]==1||map[i][k]==1){
if(visit[i]==1&&parent!=i){
for(int j=m-1;;j--){
cout<<path[j]<<' ';
if(path[j]==i)
break;
}
cout<<endl;
}
if(visit[i]==0)
dfs(i,k);
}
}
visit[k]=-1; //访问结束
m--;
}
int main(){
map[1][2]=1;
map[2][3]=1;
map[3][1]=1;
map[3][4]=1;
map[5][4]=1;
map[5][6]=1;
map[6][7]=1;
map[7][5]=1;
v=7;
for(int i=1;i<=v;i++)
if(visit[i]!=-1)
dfs(i,-1);
return 0;
}
无向图找环DFS
最新推荐文章于 2023-04-18 11:51:10 发布