1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
#include <vector>
#include <queue>
using namespace std;

vector <int> v[200010];
int d[200010];
int p[200010];
queue <int> s;

int main() {
	ios_base::sync_with_stdio(0);
	int n, m, k, a, b;
	cin >> n >> m >> k;
	for(int i = 0; i < m; i ++) {
		cin >> a >> b;
		v[a].push_back(b);
		v[b].push_back(a);
		d[a] ++;
		d[b] ++;
	}
	for(int i = 1; i <= n; i ++) {
		if(d[i] < k) {
			s.push(i);
		}
	}
	int x;
	while(!s.empty()) {
		x = s.front();
		s.pop();
		for(int i = 0; i < v[x].size(); i++) {
			d[v[x][i]] --;
			if(d[v[x][i]] == k -1) {
				s.push(v[x][i]);
			}
		}
	}
	int wyn = 0, aw, y;
	x = -1;
	for(int i = 1; i <= n; i ++) {
		if(d[i] >= k) {
			s.push(i);
			aw = 1;
			p[i] = i;
			d[i] = 0;
			while(!s.empty()) {
				y = s.front();
				s.pop();
				for(int j = 0; j < v[y].size(); j ++) {
					if(d[v[y][j]] >= k) {
						aw ++;
						p[v[y][j]] = i;
						d[v[y][j]] = 0;
						s.push(v[y][j]);
					}
				}
			}
			if(aw > wyn) {
				wyn = aw;
				x = i;
			}
		}
	}
	if(wyn == 0) {
		cout << "NIE";
	}
	else {
		cout << wyn << endl;
		for(int i = 1; i <= n; i ++) {
			if(p[i] == x) {
				cout << i << " ";
			}
		}
	}
	cout << endl;
	return 0;
}