#include <iostream>
using namespace std;
int a[10005], g[10005];
int dfn(int x)
{
return g[x] = (x == g[x]) ? x : dfn(g[x]);
}
int lowbit(int x)
{
return x & -x;
}
int main()
{
long long n, c1, c2;
cin >> n >> c1 >> c2;
if (c1 == c2)
{
cout << (n - 1) * c1;
return 0;
}
for (int i = 1; i <= n; i++)
{
cin >> a[i];
g[i] = i;
}
long long cnt = 0;
for (int i = 1; i <= n; i++)
{
for (int j = i + 1; j <= n; j++)
{
int x = a[i] ^ a[j];
int trig = (x != 0 && lowbit(x) == x) ? 1 : 0;
if ((c1 < c2 && trig == 1) || (c1 > c2 && trig == 0))
{
int gi = dfn(i), gj = dfn(j);
if (gi != gj)
{
g[gi] = gj, cnt++;
}
}
}
}
cout << min(c1, c2) * cnt + max(c1, c2) * (n - 1 - cnt);
return 0;
}
WA80分,第1 2点WA。如果把33行的x!=0去掉就是40分,但1 2 3 4AC,其余WA。这是什么情况?