WA40/80求助
查看原帖
WA40/80求助
116524
ShanireZ楼主2022/11/9 15:14
#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。这是什么情况?

2022/11/9 15:14
加载中...