97672024-03-06 13:56:45FulopMateEmezen Rt.cpp17Wrong answer 0/100377ms62352 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

#define MAX(a, b) (a) = max((a), (b))
#define MIN(a, b) (a) = min((a), (b))
#define all(a) (a).begin(), (a).end()
#define sortedpair(a, b) {min((a), (b)), max((a), (b))}

const ll MOD = 1e9+7;

const int MAXN = 100'001;

struct E {
    int u, v, w;

    E(int a, int b, int c) : u(a), v(b), w(c) {}
};

int par[MAXN], ans[MAXN];
vector<int> g[MAXN], g2[MAXN];

int get(int u) {
    if (par[u] == u) return u;
    return par[u]=get(par[u]);
}

bool unio(int u, int v) {
    u = get(u); v=get(v);
    if (u == v) return false;
    par[u]=v;
    return true;
}

void dfs(int u, int p = -1, int d = 0) {
    ans[u] = d&1;
    for (int v : g[u]) {
        if (v != p) dfs(v, u, d+1);
    }
}

void solve(){
    int n, m; cin>>n>>m;
    iota(par, par+n+1, 0);
    map<pair<int, int>, int> mp;
    vector<pair<int, int>> a;
    for (int i = 0; i < m; i++) {
        int u, v; cin >> u >> v;
        g2[u].emplace_back(v);
        g2[v].emplace_back(u);
        a.emplace_back(u, v);
        if (u > v) swap(u, v);
        mp[{u, v}]++;
    }
    for (int i = 1; i <= n; i++) {
        g[i].clear();
        g2[i].clear();
    }

    vector<E> edges;
    for (auto [e, x] : mp) {
        edges.emplace_back(e.first, e.second, x);
    }
    sort(edges.begin(), edges.end(), [](auto x, auto y){
        return x.w > y.w;
    });
    for (E e : edges) {
        if (unio(e.u, e.v)) {
            g[e.u].emplace_back(e.v);
            g[e.v].emplace_back(e.u);
        }
    }
    dfs(1);
    int x = 0;
    for (int it = 0; it < 200; it++) {
        for (int i = 1; i <= n; i++) {
            int cnt = 0;
            for (int u : g2[i]) {
                cnt += (ans[u]==ans[i]);
            }
            if (cnt > g2[i].size()/2) {
                ans[i] ^= 1;
            }
        }
    }
    int cnt = count(ans+1, ans+n+1, 1);
    cout << cnt << "\n";
    for (int i = 1; i <= n; i++) {
        if (ans[i]) cout << i << " ";
    }
    cout << "\n";
}

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    int _t = 1;
    cin >> _t;
    while (_t--) {
        solve();
    }
    return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted7ms11260 KiB
subtask20/16
2Wrong answer6ms11516 KiB
3Accepted7ms11776 KiB
4Accepted6ms11948 KiB
5Accepted6ms12164 KiB
6Accepted7ms12316 KiB
7Wrong answer7ms12564 KiB
8Wrong answer6ms12608 KiB
9Accepted6ms12608 KiB
10Wrong answer6ms12720 KiB
11Wrong answer7ms12932 KiB
12Accepted6ms12892 KiB
13Accepted6ms13020 KiB
14Accepted6ms13020 KiB
15Accepted7ms13272 KiB
16Accepted6ms13200 KiB
subtask30/18
17Accepted96ms33840 KiB
18Accepted224ms56296 KiB
19Accepted203ms55300 KiB
20Wrong answer35ms16432 KiB
21Accepted168ms42008 KiB
22Accepted243ms52704 KiB
23Accepted275ms58952 KiB
24Accepted296ms60120 KiB
25Accepted358ms62272 KiB
26Accepted367ms62224 KiB
subtask40/66
27Wrong answer39ms17168 KiB
28Wrong answer57ms22760 KiB
29Accepted101ms31572 KiB
30Accepted282ms53028 KiB
31Accepted370ms62352 KiB
32Accepted324ms62340 KiB
33Accepted363ms61444 KiB
34Accepted377ms60492 KiB
35Wrong answer206ms56524 KiB
36Wrong answer204ms56600 KiB
37Wrong answer7ms14964 KiB
38Accepted13ms16856 KiB
39Wrong answer28ms20656 KiB
40Accepted7ms15004 KiB
41Wrong answer8ms15344 KiB
42Accepted86ms14608 KiB
43Wrong answer43ms14612 KiB
44Wrong answer23ms14616 KiB
45Wrong answer17ms14632 KiB