函数内调用形参,值自行改变?
查看原帖
函数内调用形参,值自行改变?
327491
地球协和联盟楼主2020/7/26 20:56
#include <bits/stdc++.h>
#define re register
using namespace std;
typedef long long ll;
ll n ,m,edge[20],arrive[(1<<17)];

//¶ÁÓÅ 
inline ll read()
{
	re ll x=0;re char ch=getchar();
	while(!isdigit(ch)) ch=getchar();
	while(isdigit(ch)) x=x*10+ch-'0',ch=getchar();
	return x;
}

//ËÑË÷
ll dfs(ll x)
{
	cout<<"1:  "<<x<<endl;
	ll ans=0;
	for(ll j=x;j;j=(j-1)&x)
	{
		if(arrive[j]==(1<<n)-1)
		{
			cout<<"2:  "<<x<<endl;
			ans=max(ans,dfs(x^j));
		}
	}
	return ans+1;
 } 

//ÇåÁã
void Clear()
{
	n=m=0;
	memset(edge,0,sizeof(edge));
	memset(arrive,0,sizeof(arrive));
}
//¶ÁÈë
void Input()
{
	n=read();
	for(re ll i=0;i<n;i++)
	{
		m=read();
		while(m--)
		{
			ll a=read();
			edge[i]|=(1<<a);
		}
	}
 } 

//³õʼ»¯
void Init()
{
	for(re ll i=1;i<(1<<n);i++)
		for(re ll j=0;j<n;j++)
			if(i&(1<<j))
				arrive[i]|=edge[j];
 } 

//Ö÷³ÌÐò
void Play()
{
	ll ansp=dfs((1<<n)-1);
	printf("%lld\n",ansp);
}

//Ö÷º¯Êý
int main()
{
	Clear();
	Input();
	if(n==0) return 0;
	Init();
	Play();
	main();
 } 

1 2

2020/7/26 20:56
加载中...