搜索的9分挂了求助
查看原帖
搜索的9分挂了求助
664744
_lqs_楼主2022/12/31 19:22
#include<bits/stdc++.h>
using namespace std;
int n,m,i,j,ans,a[100005],b[100005],c,u[205];
int b1[205],b2[205],len,s[205];
void dfs(int k){
	if(k>len){
		int cnt=0;
		for(int i=1;i<=n+10;i++) s[i]=0;
		for(int i=1;i<=len;i++){
			if(u[i]==1){
				cnt++;
				s[b1[i]]++;
				s[b2[i]]++;
			}
		}
		if(cnt!=n-1) return;
		for(int i=1;i<=n;i++){
			if(s[i]%2==0) return;
		}
		for(int i=1;i<=len;i++){
			if(u[i]==1) printf("%d %d\n",b1[i],b2[i]);
		}
		exit(0);
	}
	for(int i=0;i<=1;i++){
		if(i==1){
			u[k]=1;
			dfs(k+1);
			u[k]=0;
		}
		if(i==0) dfs(k+1);
	}
}
int main(){
	scanf("%d",&n);
	for(i=1;i<=n-3;i++) scanf("%d%d",&a[i],&b[i]);
	if(n%2==1){
		printf("-1");
		return 0;
	}
	else if(n<=10){
		for(i=1;i<=n-3;i++) b1[++len]=a[i],b2[len]=b[i];
		for(i=1;i<n;i++) b1[++len]=i,b2[len]=i+1;
		b1[++len]=1,b2[len]=n;
//		for(i=1;i<=len;i++) printf("%d %d\n",b1[i],b2[i]);
		dfs(1);
		return 0;
	}
	else{
		for(i=2;i<=n;i++) printf("1 %d\n",i);
	}
	return 0;
}

赛时搜索的部分分不知道挂在哪了

2022/12/31 19:22
加载中...