文章

35

粉丝

0

获赞

195

访问

7.6k

头像
graph's connected components(弱化版) 无敌了这题样例还有重复值题解:
P1687 中南大学机试题
发布于2026年3月4日 22:35
阅读数 236

#include<bits/stdc++.h>
using namespace std;

const int N = 5000;
int fa[N];

int find(int x){
    if(x == fa[x]) return x;
    return fa[x] = find(fa[x]);
}

void merge_set(int x, int y){
    int a = find(x), b = find(y);
    if(a == b) return;
    fa[a] = b;
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, m;
    while(cin >> n >> m){
        // DSU 按 “输入下标” 建点:0..m-1
        for(int i = 0; i < m; i++) fa[i] = i;

        vector<int> vc(m);
        for(int i = 0; i < m; i++) cin >> vc[i];

        for(int i = 0; i < m; i++){
            for(int j = i + 1; j < m; j++){
                if( (vc[i] & vc[j]) == 0 ) merge_set(i, j); // ✅ 合并下标,不要合并数值
            }
        }

        set<int> st;
        for(int i = 0; i < m; i++) st.insert(find(i));
        cout << st.size() << "\n";
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

1 条评论
liux662
2026年3月18日 17:08

不对,题目好像保证了没有重复元素,但是测试样例出现:
12 4096 3951 1172 1949 1415 2922 3281 2456 442 2462 3587 1490 986 3093 1121 183 884 3503 2707 2140 3092 2655 278 3675 4035 1943 1249 989 717 257 2377 3064 1224 3440 2338 2108 2769 22 807 904 3865 2551 1436 3874 2465 3997 3377 1543 1601 1806 2858 2688 3055 507 1725 502 2366 2106 3515 775 2597 1655 2163 2522 2818 1318 1236 1711 3294 3003 3281 2746 3827 1054 3082 1841 363 601 2216 676 1387 1172 904 2189 3664 3908 925 1832 2105 2463 143 3972 1989 3667 168 3034 1822 1143 3569 31 1078 1218 1688 2261 1104 3835 32

1172出现了两次

赞(0)
回复给: