#include <algorithm> #include <iostream> #include <vector> using namespace std; const int maxn = 200005; int n, m, d; int ile[maxn]; vector <int> S[maxn]; bool dead[maxn]; vector <int> temp; void kasuj(int w) { dead[w]=true; int u; for(int i=0; i<S[w].size(); i++) { u = S[w][i]; ile[u]--; if(ile[u]<d && !dead[u]) kasuj(u); } } void result(int w) { temp.push_back(w); dead[w]=true; int u; for(int i=0; i<S[w].size(); i++) { u = S[w][i]; if(!dead[u]) result(u); } } vector <vector<int> > V; int main() { ios::sync_with_stdio(0); cin>>n>>m>>d; int a, b; while(m--) { cin>>a>>b; ile[a]++; ile[b]++; S[a].push_back(b); S[b].push_back(a); } for(int i=1; i<=n; i++) { if(!dead[i] && ile[i]<d) kasuj(i); } for(int i=1; i<=n; i++) { if(!dead[i]) { result(i); } V.push_back(temp); temp.clear(); } int best = 0, nr = -1; for(int i=0; i<V.size(); i++) { if(V[i].size()>best) { best = V[i].size(); nr = i; } } if(nr == -1) { cout<<"NIE\n"; return 0; } sort(V[nr].begin(), V[nr].end()); cout << best << "\n"; for(int i=0; i<best; i++) { cout<<V[nr][i]<<" "; } cout<<"\n"; return 0; }
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 | #include <algorithm> #include <iostream> #include <vector> using namespace std; const int maxn = 200005; int n, m, d; int ile[maxn]; vector <int> S[maxn]; bool dead[maxn]; vector <int> temp; void kasuj(int w) { dead[w]=true; int u; for(int i=0; i<S[w].size(); i++) { u = S[w][i]; ile[u]--; if(ile[u]<d && !dead[u]) kasuj(u); } } void result(int w) { temp.push_back(w); dead[w]=true; int u; for(int i=0; i<S[w].size(); i++) { u = S[w][i]; if(!dead[u]) result(u); } } vector <vector<int> > V; int main() { ios::sync_with_stdio(0); cin>>n>>m>>d; int a, b; while(m--) { cin>>a>>b; ile[a]++; ile[b]++; S[a].push_back(b); S[b].push_back(a); } for(int i=1; i<=n; i++) { if(!dead[i] && ile[i]<d) kasuj(i); } for(int i=1; i<=n; i++) { if(!dead[i]) { result(i); } V.push_back(temp); temp.clear(); } int best = 0, nr = -1; for(int i=0; i<V.size(); i++) { if(V[i].size()>best) { best = V[i].size(); nr = i; } } if(nr == -1) { cout<<"NIE\n"; return 0; } sort(V[nr].begin(), V[nr].end()); cout << best << "\n"; for(int i=0; i<best; i++) { cout<<V[nr][i]<<" "; } cout<<"\n"; return 0; } |