176022025-08-09 13:49:05BucsMateHálózati biztonság (50)cpp17Accepted 50/50156ms9080 KiB
#include <iostream>
#include <vector>
#include <queue>

using namespace std;

int main()
{
    int N, M, K;
    cin >> N >> M >> K;
    vector<vector<int>> adj(N+1);
    vector<int> degree(N+1);
    vector<bool> inSubset(N+1, true);

    for(int i = 0; i < M; ++i){
        int a, b;
        cin >> a >> b;
        adj[a].push_back(b);
        adj[b].push_back(a);
        degree[a]++;
        degree[b]++;
    }

    queue<int> q;
    for(int i = 1; i <= N; ++i){
        if(degree[i] < K){
            inSubset[i] = false;
            q.push(i);
        }
    }
    int nrRemaining = N;
    while(!q.empty()){
        int currNode = q.front();
        nrRemaining--;
        q.pop();
        for(int newNode : adj[currNode]){
            if(inSubset[newNode]){
                degree[newNode]--;
                if(degree[newNode] < K){
                    inSubset[newNode] = false;
                    q.push(newNode);
                }
            }
        }
    }
    cout << nrRemaining << endl;
    for(int i = 1; i <= N; ++i){
        if(inSubset[i]){
            cout << i << " ";
        }
    }
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms500 KiB
2Accepted0/097ms4920 KiB
3Accepted2/21ms508 KiB
4Accepted2/21ms316 KiB
5Accepted2/21ms316 KiB
6Accepted2/21ms564 KiB
7Accepted2/21ms316 KiB
8Accepted2/21ms556 KiB
9Accepted2/21ms564 KiB
10Accepted2/26ms660 KiB
11Accepted2/22ms464 KiB
12Accepted2/24ms564 KiB
13Accepted3/31ms316 KiB
14Accepted3/34ms840 KiB
15Accepted3/37ms1332 KiB
16Accepted3/381ms4148 KiB
17Accepted3/37ms872 KiB
18Accepted3/310ms2356 KiB
19Accepted3/3109ms7476 KiB
20Accepted3/3156ms9080 KiB
21Accepted3/3119ms7708 KiB
22Accepted3/31ms316 KiB