#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]); }
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]); } |