邻接表40分求助
查看原帖
邻接表40分求助
190931
cannotdp楼主2022/12/11 14:53
#include <iostream>
#include <algorithm>
using namespace std;
int n;
const int N=55;
int head[N],nxt[N],ver[N],ans[N];
bool vis[N];
int tot;
void add(int x,int y){
	ver[++tot]=y;
	nxt[tot]=head[x];
	head[x]=tot;
}
void dfs(int x,int deep){
	if(x==1&&deep==n+1){
		for(int i=1;i<deep;i++)	printf("%d ",ans[i]);
		exit(0);
	}
	for(int i=head[x];i;i=nxt[i]){
		if(!vis[ver[i]]||(ver[i]==1&&deep==n)){
			ans[deep+1]=ver[i];
			vis[ver[i]]=1;
			dfs(ver[i],deep+1);
			vis[ver[i]]=0;
		}
	}
}
signed main(){
	scanf("%d",&n);	
	int x,y;
	while(scanf("%d%d",&x,&y)!=EOF) add(x,y);
	ans[1]=1,vis[1]=1;
	dfs(1,1);
	return 0;
}
2022/12/11 14:53
加载中...