208572026-01-10 12:21:39hunzombiElágazás nélküli úton levő települések (50 pont)cpp17Accepted 50/5028ms1236 KiB
#include <bits/stdc++.h>
using namespace std;

int n, m;
vector<bool> in_res;
vector<vector<int>> graph;

int main()
{
    cin >> n >> m;

    in_res.assign(n + 1, false);
    graph.assign(n + 1, vector<int>());

    for (int i=0; i < m; i++) {
        int u, v;
        cin >> u >> v;
        graph[u].push_back(v);
        graph[v].push_back(u);
    }

    stack<pair<int, int>> stk;

    for (int i=1; i <= n; i++) {
        if (graph[i].size() == 1) stk.push({i, i});
    }

    vector<int> ans;

    while (!stk.empty()) {
        pair<int, int> top_pair = stk.top();
        stk.pop();
        int node = top_pair.first, parent = top_pair.second;

        if (node != parent && !in_res[node]) {
            in_res[node] = true;
            ans.push_back(node);
        }

        if (graph[node].size() > 2) continue;

        for (int next : graph[node]) {
            if (next != parent) stk.push({next, node});
        }
    }

    sort(ans.begin(), ans.end());
    cout << ans.size() << '\n';
    for (int x : ans) cout << x << ' ';

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/028ms1168 KiB
3Accepted2/21ms500 KiB
4Accepted2/21ms316 KiB
5Accepted2/21ms560 KiB
6Accepted2/21ms316 KiB
7Accepted2/22ms316 KiB
8Accepted2/23ms316 KiB
9Accepted2/24ms564 KiB
10Accepted2/27ms572 KiB
11Accepted2/214ms820 KiB
12Accepted2/214ms820 KiB
13Accepted3/32ms512 KiB
14Accepted3/33ms316 KiB
15Accepted3/34ms564 KiB
16Accepted3/34ms564 KiB
17Accepted3/312ms820 KiB
18Accepted3/313ms828 KiB
19Accepted3/316ms824 KiB
20Accepted3/326ms1236 KiB
21Accepted3/327ms1096 KiB
22Accepted3/327ms1124 KiB