8758 2024. 01. 29 11:04:21 Gervid Hálózati biztonság (50) cpp17 Elfogadva 50/50 160ms 26592 KiB
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#include <limits.h>
#include <map>
#include <stack>
#include <algorithm>

using namespace std;

void deledges(vector<vector<int>>& g, vector<int>& degree, int node, int k)
{
	degree[node] = -1;
	for (int i = 0; i < g[node].size(); i++)
	{
		if (--degree[g[node][i]] < k && degree[g[node][i]] > 0)
		{
			deledges(g, degree, g[node][i], k);
		}
	}
}

int main()
{
	int n, m, k, i, node1, node2;
	cin >> n >> m >> k;

	vector<vector<int>> g(n);
	vector<int> degree(n, 0);

	for (i = 0; i < m; i++)
	{
		cin >> node1 >> node2;
		node1--, node2--;

		g[node1].push_back(node2);
		g[node2].push_back(node1);

		degree[node1]++;
		degree[node2]++;
	}

	bool done = false;
	node1 = 0;

	for (i = 0; i < n; i++)
	{
		if (degree[i] < k && degree[i] > 0)
		{
			deledges(g, degree, i, k);
		}
	}

	vector<int> out;
	out.reserve(n);

	for (i = 0; i < n; i++)
	{
		if (degree[i] >= k)
		{
			out.push_back(i);
		}
	}

	cout << out.size() << '\n';

	for (i = 0; i < out.size(); i++)
	{
		cout << out[i] + 1 << ' ';
	}
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1816 KiB
2 Elfogadva 0/0 86ms 14460 KiB
3 Elfogadva 2/2 3ms 3252 KiB
4 Elfogadva 2/2 3ms 3468 KiB
5 Elfogadva 2/2 3ms 3568 KiB
6 Elfogadva 2/2 3ms 3844 KiB
7 Elfogadva 2/2 3ms 3772 KiB
8 Elfogadva 2/2 3ms 4000 KiB
9 Elfogadva 2/2 3ms 4492 KiB
10 Elfogadva 2/2 8ms 4660 KiB
11 Elfogadva 2/2 3ms 4496 KiB
12 Elfogadva 2/2 6ms 4872 KiB
13 Elfogadva 3/3 3ms 4748 KiB
14 Elfogadva 3/3 7ms 5428 KiB
15 Elfogadva 3/3 8ms 5984 KiB
16 Elfogadva 3/3 82ms 13160 KiB
17 Elfogadva 3/3 8ms 5764 KiB
18 Elfogadva 3/3 12ms 8572 KiB
19 Elfogadva 3/3 92ms 20216 KiB
20 Elfogadva 3/3 160ms 26592 KiB
21 Elfogadva 3/3 101ms 20620 KiB
22 Elfogadva 3/3 3ms 5424 KiB