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
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
#pragma once
#include<vector>
#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
	int n,m,d;
	scanf("%d%d%d",&n,&m,&d);
	vector<int>f(n,0);
	vector<int>k(n,0);
	vector<pair<int,int> >a(m);
	for(int i=0;i<m;i++)
	{
		scanf("%d%d",&a[i].first,&a[i].second);
	}
	bool ff=true;
	while(ff)
	{
		ff=false;
		for(int i=0;i<m;i++)
		{
			k[a[i].first-1]++;
			k[a[i].second-1]++;
		}
		for(int i=0;i<n;i++)
		{
			if(k[i]<d && k[i]>0){f[i]=-1;ff=true;}
			k[i]=0;
		}
		for(int i=0;i<m;i++)
		{
			if(f[a[i].first-1]<0)
			{
				a[i].first=a[m-1].first;
				a[i].second=a[m-1].second;
				a.pop_back();
				i--;
				m--;
			}
			else if(f[a[i].second-1]<0)
			{
				a[i].first=a[m-1].first;
				a[i].second=a[m-1].second;
				a.pop_back();
				i--;
				m--;
			}
		}
	}
	int ma_kolor=0,ma_kol=0,kolor=0,kol=0,n_kolor=1;
	for(int i=0;i<n;i++)
	{
		if(f[i]==0)
		{
			f[i]=n_kolor;
			kol=1;
			ff=true;
			while(ff)
			{
				ff=false;
				for(int j=0;j<m;j++)
				{
					if(f[a[j].first ==n_kolor-1] && f[a[j].second-1] !=n_kolor )
					{
						ff=true;
						f[ a[j].second -1]=n_kolor;
						kol++;
					}
					else if(f[a[j].first-1] != n_kolor && f[a[j].second-1] ==n_kolor )
					{
						ff=true;
						f[ a[j].first -1]=n_kolor;
						kol++;
					}
				}
			}
			if(ma_kol<kol)
			{
				ma_kol=kol;
				ma_kolor=n_kolor;
			}
			n_kolor++;
		}
	}
	if(ma_kol<d)
	{
		printf("NIE");
	}
	else
	{
		printf("%d\n",ma_kol);
		for(int i=0;i<n;i++)
		{
			if(f[i]==ma_kolor){printf("%d ",i+1);}
		}
	}
    return 0;
}