#include<bits/stdc++.h> using namespace std; const int M = 1000007; vector<int> v[M]; int S[M]; bool T[M]; bool W[M]; vector<int> naj, akt; int maksi = 0; int n, m, k; void znajdz(int x) { if(S[x]<k) { T[x] = 1; for(int j = 0; j < v[x].size(); j++) { S[v[x][j]]--; if(S[v[x][j]]<k and !T[v[x][j]]) znajdz(v[x][j]); } } } void dfs(int x, int l) { akt.push_back(x); T[x] = 1; for(int i = 0; i < v[x].size(); i++) { if(!T[v[x][i]]) dfs(v[x][i], l+1); } } int main() { scanf("%d%d%d", &n, &m, &k); int a, b; for(int i = 0; i < m; i++) { scanf("%d%d", &a, &b); v[a].push_back(b); v[b].push_back(a); S[a]++; S[b]++; } for(int i = 1; i <= n; i++) if(!T[i]) znajdz(i); for(int i = 1; i <= n; i++) { if(!T[i]) dfs(i, 1); if(akt.size()>=k and akt.size()>maksi) { maksi = akt.size(); naj.clear(); naj = akt; akt.clear(); } } if(maksi<k){ printf("NIE\n"); return 0;} printf("%d\n", maksi); sort(naj.begin(), naj.end()); for(int i = 0; i < naj.size(); i++) printf("%d ", naj[i]); }
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 | #include<bits/stdc++.h> using namespace std; const int M = 1000007; vector<int> v[M]; int S[M]; bool T[M]; bool W[M]; vector<int> naj, akt; int maksi = 0; int n, m, k; void znajdz(int x) { if(S[x]<k) { T[x] = 1; for(int j = 0; j < v[x].size(); j++) { S[v[x][j]]--; if(S[v[x][j]]<k and !T[v[x][j]]) znajdz(v[x][j]); } } } void dfs(int x, int l) { akt.push_back(x); T[x] = 1; for(int i = 0; i < v[x].size(); i++) { if(!T[v[x][i]]) dfs(v[x][i], l+1); } } int main() { scanf("%d%d%d", &n, &m, &k); int a, b; for(int i = 0; i < m; i++) { scanf("%d%d", &a, &b); v[a].push_back(b); v[b].push_back(a); S[a]++; S[b]++; } for(int i = 1; i <= n; i++) if(!T[i]) znajdz(i); for(int i = 1; i <= n; i++) { if(!T[i]) dfs(i, 1); if(akt.size()>=k and akt.size()>maksi) { maksi = akt.size(); naj.clear(); naj = akt; akt.clear(); } } if(maksi<k){ printf("NIE\n"); return 0;} printf("%d\n", maksi); sort(naj.begin(), naj.end()); for(int i = 0; i < naj.size(); i++) printf("%d ", naj[i]); } |