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