应该是死循环了,求救啊,QAQ
查看原帖
应该是死循环了,求救啊,QAQ
227824
JK_LOVER楼主2020/8/4 20:08
#include<bits/stdc++.h>
using namespace std;
#define LL long long
const int N = 1000100;
LL n,X,maxflow,d;
int ans = 0,top = 0,cnt[N],vis[N];
void dfs(LL f)
{
	if(ans) return;
	if(f == 0){
		sort(cnt+1,cnt+1+top);
		for(int i = 1;i <= top;i++){
			printf("%d ",cnt[i]);
		}
		printf("%d ",n);
		for(int i = 1;i <= n-2;i++)
		if(!vis[i]) printf("%d ",i);
		printf("%d ",n-1);
		ans = 1;
		exit(0);
	}
	for(int i = 1;i <= n-2;i++)
	{
		if(!vis[i] && (f - ((n-1) - i) >= 0))
		{
			cnt[++top] = i;vis[i] = 1;
			dfs(f - ((n-1)-i));
		}
	}
}
int main()
{
	cin>>n>>X;
	maxflow = (n-1)*(n-2) - (1+(n-2))*(n-2)/2;
	d = maxflow - X;
	if(d < 0){
		printf("-1\n");
		return 0;
	} 
	dfs(d);
	return 0;
}
2020/8/4 20:08
加载中...