#include <bits/stdc++.h> using namespace std; const int R = 2e5 + 1; const int INF = 1e9; bool jest[R]; int rozm[R]; vector<int> t[R], wor, odp; void dfs(int x){ jest[x] = false; wor.push_back(x); for(int i=0;i<int(t[x].size());i++){ if(jest[t[x][i]])dfs(t[x][i]); } } int main(){ int n, m, d; scanf("%d%d%d",&n,&m,&d); for(int i=0;i<m;i++){ int a, b; scanf("%d%d",&a,&b); t[a].push_back(b); t[b].push_back(a); } for(int i=1;i<=n;i++){ rozm[i] = t[i].size(); if(rozm[i] < d)wor.push_back(i); else jest[i] = true; } while(!wor.empty()){ int akt = wor.back(); wor.pop_back(); for(int i=0;i<int(t[akt].size());i++){ rozm[t[akt][i]]--; if(jest[t[akt][i]] && rozm[t[akt][i]] < d){ wor.push_back(t[akt][i]); jest[t[akt][i]] = false; } } } for(int i=1;i<=n;i++){ if(jest[i]){ for(int j=0;j<int(t[i].size());j++){ while(!jest[t[i][j]]){ swap(t[i][j], t[i].back()); t[i].pop_back(); } } } else t[i].clear(); } for(int i=1;i<=n;i++){ if(jest[i]){ wor.clear(); dfs(i); if(wor.size() > odp.size()){ odp.clear(); for(int j=0;j<int(wor.size());j++){ odp.push_back(wor[j]); } } } } if(odp.empty())printf("NIE"); else{ sort(odp.begin(), odp.end()); printf("%d\n",odp.size()); for(int i=0;i<int(odp.size());i++){ printf("%d ",odp[i]); } } 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 | #include <bits/stdc++.h> using namespace std; const int R = 2e5 + 1; const int INF = 1e9; bool jest[R]; int rozm[R]; vector<int> t[R], wor, odp; void dfs(int x){ jest[x] = false; wor.push_back(x); for(int i=0;i<int(t[x].size());i++){ if(jest[t[x][i]])dfs(t[x][i]); } } int main(){ int n, m, d; scanf("%d%d%d",&n,&m,&d); for(int i=0;i<m;i++){ int a, b; scanf("%d%d",&a,&b); t[a].push_back(b); t[b].push_back(a); } for(int i=1;i<=n;i++){ rozm[i] = t[i].size(); if(rozm[i] < d)wor.push_back(i); else jest[i] = true; } while(!wor.empty()){ int akt = wor.back(); wor.pop_back(); for(int i=0;i<int(t[akt].size());i++){ rozm[t[akt][i]]--; if(jest[t[akt][i]] && rozm[t[akt][i]] < d){ wor.push_back(t[akt][i]); jest[t[akt][i]] = false; } } } for(int i=1;i<=n;i++){ if(jest[i]){ for(int j=0;j<int(t[i].size());j++){ while(!jest[t[i][j]]){ swap(t[i][j], t[i].back()); t[i].pop_back(); } } } else t[i].clear(); } for(int i=1;i<=n;i++){ if(jest[i]){ wor.clear(); dfs(i); if(wor.size() > odp.size()){ odp.clear(); for(int j=0;j<int(wor.size());j++){ odp.push_back(wor[j]); } } } } if(odp.empty())printf("NIE"); else{ sort(odp.begin(), odp.end()); printf("%d\n",odp.size()); for(int i=0;i<int(odp.size());i++){ printf("%d ",odp[i]); } } return 0; } |