bzoj 3943: [Usaco2015 Feb]SuperBull

来源:互联网 发布:软件开发合同范本下载 编辑:程序博客网 时间:2024/06/07 12:17

→题目链接←


又是一道水题,又是一道翻译及其坑人的题

翻译里每个数是1~230...原文是1~2^30

太差劲了


暴力建边然后跑最大生成树


代码:

#include<iostream>#include<cstdio>#include<vector>#include<algorithm>#define ll long long using namespace std;struct node{int s,t,len;node(int x,int y,int z){s=x,t=y,len=z;}friend bool operator < (node a,node b){return a.len>b.len;}};int n;int a[2020];int fa[2020];ll ans=0;vector<node>e;int getroot(int x){if(fa[x]==x)return x;return fa[x]=getroot(fa[x]);}int main(){scanf("%d",&n);for(int i=1; i<=n; i++){scanf("%d",&a[i]);fa[i]=i;}for(int i=1; i<=n; i++){for(int j=i+1; j<=n; j++){e.push_back(node(i,j,a[i]^a[j]));}}sort(e.begin(),e.end());int sum=1;for(int i=0; i<e.size(); i++){node t=e[i];t.s=getroot(t.s);t.t=getroot(t.t);if(t.s!=t.t){fa[t.s]=t.t;ans+=t.len;sum++;if(sum==n)break;}}printf("%lld\n",ans);return 0;}


翻译里每个数是1~230...原文是1~2^30

太差劲了

原创粉丝点击