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
#include <iostream>
#include <vector>
using namespace std;

const int N=200000;
vector<int>  G[N+1];
int S[N+1];
int odwiedzone[N+1]={0};
vector<int> kolejka;
void dfs(int w);

int main(int argc, char** argv) {
	int n=0, m=0, d=0, a=0, b=0, licznik=0;
	cin >> n >> m >> d;
	while(m--)
{
 cin >> a >> b;
 G[a].push_back(b);
 G[b].push_back(a);	
}
	
	for(int i=1; i<=n; i++)
{
 	if(G[i].size()<d){
	 for(int j=0; j<G[i].size(); j++){
	 int k=G[i][j];
	 for(int p=0; p<G[i].size(); p++)
	 if(G[k][p]==i) G[k].erase(G[k].begin()+p);
	}
	 G[i].clear();
	 }
}
	int x=0;
 	for(int i=1; i<=200000; i++)
 	if(!G[i].empty()) {
	 licznik++;
	 S[x]=i;
	 x++;
	}
	cout << licznik << endl;
	for(int j=0; S[j]!=0; j++)
	cout << S[j] << " ";
	
	
	return 0;
}
void dfs(int w)
{
  cout << "Odwiedzam wierzolek nr " << w << endl;
  odwiedzone[w]=1;	
  for(int j=0; j<G[w].size(); j++)
   if(odwiedzone[G[w][j]]==0)
    dfs(G[w][j]);	
}