#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; } |
English