9759 2024. 03. 06 13:49:57 FulopMate Emezen Rt. cpp17 Hibás válasz 18/100 1.074s 62272 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();
    }

    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);
    for (int it = 0; it < 100; 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;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 6ms 11264 KiB
subtask2 0/16
2 Elfogadva 6ms 11648 KiB
3 Elfogadva 6ms 11620 KiB
4 Elfogadva 4ms 11628 KiB
5 Elfogadva 7ms 11756 KiB
6 Elfogadva 6ms 11888 KiB
7 Elfogadva 7ms 12116 KiB
8 Elfogadva 7ms 12320 KiB
9 Elfogadva 7ms 12492 KiB
10 Elfogadva 7ms 12700 KiB
11 Hibás válasz 6ms 12912 KiB
12 Elfogadva 6ms 13164 KiB
13 Elfogadva 6ms 13244 KiB
14 Hibás válasz 6ms 13332 KiB
15 Elfogadva 7ms 13588 KiB
16 Hibás válasz 6ms 13708 KiB
subtask3 18/18
17 Elfogadva 112ms 34560 KiB
18 Elfogadva 250ms 56676 KiB
19 Elfogadva 263ms 55596 KiB
20 Elfogadva 35ms 16620 KiB
21 Elfogadva 273ms 42324 KiB
22 Elfogadva 363ms 52912 KiB
23 Elfogadva 425ms 59016 KiB
24 Elfogadva 469ms 60196 KiB
25 Elfogadva 532ms 62272 KiB
26 Elfogadva 541ms 62212 KiB
subtask4 0/66
27 Elfogadva 45ms 17772 KiB
28 Elfogadva 101ms 23088 KiB
29 Elfogadva 195ms 31328 KiB
30 Elfogadva 423ms 52664 KiB
31 Elfogadva 686ms 61984 KiB
32 Elfogadva 555ms 61988 KiB
33 Elfogadva 523ms 61060 KiB
34 Elfogadva 500ms 60104 KiB
35 Elfogadva 261ms 56164 KiB
36 Elfogadva 254ms 56116 KiB
37 Elfogadva 7ms 14532 KiB
38 Elfogadva 16ms 16396 KiB
39 Elfogadva 35ms 20192 KiB
40 Elfogadva 7ms 14532 KiB
41 Elfogadva 8ms 14784 KiB
42 Időlimit túllépés 1.06s 8752 KiB
43 Időlimit túllépés 1.074s 8780 KiB
44 Hibás válasz 449ms 14252 KiB
45 Hibás válasz 17ms 14204 KiB