搜出图中所有的环 并输出
保证输出的所有环中的第一个点是环中最小的
直接暴力吧
#include<stdio.h>
#include<string.h>
int n;
int a[10][10];
char ss[10];
bool v[10];
void dfs(int k,int s,int d)
{
int i;
if(k==s&&d!=1)
{
ss[d-1]='\0';
puts(ss);
return;
}
for(i=k;i<n;i++)
{
if(!v[i]&&a[s][i])
{
v[i]=true;
ss[d]=i+'0';
dfs(k,i,d+1);
v[i]=false;
}
}
}
int main()
{
int i,j;
while(scanf("%d",&n)!=EOF)
{
memset(a,0,sizeof(a));
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n-1;i++)
{
memset(v,false,sizeof(v));
ss[0]=i+'0';
dfs(i,i,1);
}
printf("\n");
}
return 0;
}