书上的错了?

初一16班 麦睿生  •  6个月前


#include<bits/stdc++.h>
using namespace std;
int start,length,x,n;
bool visited[101],vl[101];
int ans[101],num[101];
int g[101][101];
void print()
{
	int i;
	for(i=1;i<=length-1;i++)
	{
		cout<<ans[i]<<" ";
	}
	cout<<ans[length]<<endl;
}
void dfs(int last,int i)
{
	visited[i]=true;
	vl[i]=true;
	ans[++length]=i;
	for(int j=1;j<=num[i];j++)
	{
		if(g[i][j]==x&&g[i][j]!=last)
		{
			ans[++length]=g[i][j];
			print();
			length--;
			break;
		}
		if(!visited[g[i][j]])dfs(i,g[i][j]);
	}
	length--;
	visited[i]=false;
}
int main()
{
    memset(visited,false,sizeof(visited));
    memset(vl,false,sizeof(vl));
    cin>>n;
    int m;
    cin>>m;
    for(int i=1;i<=m;i++)
    {
    	int x,y;
    	cin>>x>>y;
    	g[x][++num[x]]=y;
    	g[y][++num[y]]=x;
	}
	for(x=1;x<=n;x++)
	{
		if(!vl[x])
		{
			length=0;
			dfs(0,x);
		}
	}
    return 0;
}

//是什么问题?


评论: