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
#include<iostream>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
int a,b,c,d,q,w;
queue<int> que;
vector<int> graf[200006];
int ilek[1000001];
bool odw[1000001];
vector<int> wyn;
vector<int> spr;
void DFS(int x){
	odw[x]=true;
	spr.push_back(x);
	for(int i=0; i<graf[x].size(); i++){
		if(odw[graf[x][i]]==false)DFS(graf[x][i]);
	}
}
int main(){
	cin>>a>>b>>d;
	for(int i=0; i<b; i++){
		cin>>q>>w;
		graf[q].push_back(w);
		graf[w].push_back(q);
	}
	for(int i=1; i<=a; i++){
		ilek[i]=graf[i].size();
		if(graf[i].size()<d){
			que.push(i);
			odw[i]=true;	
		}
	}
	while(!que.empty()){
		//cout<<1;
		int n=que.front();
		
		que.pop();
		for(int i=0; i<graf[n].size(); i++){
			
			ilek[graf[n][i]]--;
		}
		for(int i=0; i<graf[n].size(); i++){
			if(ilek[graf[n][i]]<d && odw[graf[n][i]]==false){
				odw[graf[n][i]]=true;
				que.push(graf[n][i]);
			}
		}
	}
	for(int i=1; i<=a; i++){
		if(odw[i]==false){
			DFS(i);
			if(wyn.size()<spr.size())swap(wyn, spr);
			spr.clear();
		}
	}
	if(wyn.size()==0){
		cout<<"NIE";
		return 0;
	}
	cout<<wyn.size()<<endl;
	sort(wyn.begin(), wyn.end());
	for(int i=0; i<wyn.size(); i++)cout<<wyn[i]<<" ";
	return 0;
}