超空间了
查看原帖
超空间了
1042321
I_am_a_rookie_O楼主2024/3/25 18:26
using namespace std;
const long long inf=-1e9;
long long dis[8200],book[8210],n,m,c,x[5545];
long long ans=0,ans1=0;
struct node 
{
	long long num,id;
	bool friend operator<(node jl,node jj)
	{
		return jl.num<jj.num;
	}
};
struct node1
{
long long to,z;
};
priority_queue <node> q;
vector<node1> a[2020];
void prim(long long o)
{
	for(long long i=1;i<=n;i++)
	{
		book[i]=0;
		dis[i]=inf;
	}
	dis[o]=0;
	node pr;
	pr.id=o;
	pr.num=0;
	q.push(pr);
	while(!q.empty())
	{
		long long w=q.top().id;
		q.pop();
		if(book[w]!=0)
		continue;
		book[w]=1;
		for(long long i=0;i<a[w].size();i++)
		{
			long long v=a[w][i].to;
            if(dis[v]<a[w][i].z&&book[v]==0)
			{
			    dis[v]=a[w][i].z;
				node prim;
				prim.id=v;
				prim.num=dis[v];
				q.push(prim);
			}														
		}
	}
}
int main()
{
	cin>>n;
	for(long long i=1;i<=n;i++)
	cin>>x[i];
	for(long long i=1;i<=n;i++)
	{
		for(long long j=1;j<=n;j++)
		{
			if(x[i]!=x[j])
			{
				long long le=x[i]^x[j];
//				cout<<le<<" ";
				node1 tt,tttt;
				tt.to=j;
				tt.z=le;
				tttt.to=i;
				tttt.z=le;
				a[i].push_back(tt);
				a[j].push_back(tttt);
			}
		}
	}
	prim(1);
	for(long long i=1;i<=n;i++)
	ans+=dis[i];
	cout<<ans;
}
2024/3/25 18:26
加载中...