#include<iostream> #include<queue> #include<vector> #include<algorithm> using namespace std; int a,b,c,d,q,w; queue<int> que; vector<int> graf[200006]; int ilek[1000001]; bool odw[1000001]; vector<int> wyn; vector<int> spr; void DFS(int x){ odw[x]=true; spr.push_back(x); for(int i=0; i<graf[x].size(); i++){ if(odw[graf[x][i]]==false)DFS(graf[x][i]); } } int main(){ cin>>a>>b>>d; for(int i=0; i<b; i++){ cin>>q>>w; graf[q].push_back(w); graf[w].push_back(q); } for(int i=1; i<=a; i++){ ilek[i]=graf[i].size(); if(graf[i].size()<d){ que.push(i); odw[i]=true; } } while(!que.empty()){ //cout<<1; int n=que.front(); que.pop(); for(int i=0; i<graf[n].size(); i++){ ilek[graf[n][i]]--; } for(int i=0; i<graf[n].size(); i++){ if(ilek[graf[n][i]]<d && odw[graf[n][i]]==false){ odw[graf[n][i]]=true; que.push(graf[n][i]); } } } for(int i=1; i<=a; i++){ if(odw[i]==false){ DFS(i); if(wyn.size()<spr.size())swap(wyn, spr); spr.clear(); } } if(wyn.size()==0){ cout<<"NIE"; return 0; } cout<<wyn.size()<<endl; sort(wyn.begin(), wyn.end()); for(int i=0; i<wyn.size(); i++)cout<<wyn[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 | #include<iostream> #include<queue> #include<vector> #include<algorithm> using namespace std; int a,b,c,d,q,w; queue<int> que; vector<int> graf[200006]; int ilek[1000001]; bool odw[1000001]; vector<int> wyn; vector<int> spr; void DFS(int x){ odw[x]=true; spr.push_back(x); for(int i=0; i<graf[x].size(); i++){ if(odw[graf[x][i]]==false)DFS(graf[x][i]); } } int main(){ cin>>a>>b>>d; for(int i=0; i<b; i++){ cin>>q>>w; graf[q].push_back(w); graf[w].push_back(q); } for(int i=1; i<=a; i++){ ilek[i]=graf[i].size(); if(graf[i].size()<d){ que.push(i); odw[i]=true; } } while(!que.empty()){ //cout<<1; int n=que.front(); que.pop(); for(int i=0; i<graf[n].size(); i++){ ilek[graf[n][i]]--; } for(int i=0; i<graf[n].size(); i++){ if(ilek[graf[n][i]]<d && odw[graf[n][i]]==false){ odw[graf[n][i]]=true; que.push(graf[n][i]); } } } for(int i=1; i<=a; i++){ if(odw[i]==false){ DFS(i); if(wyn.size()<spr.size())swap(wyn, spr); spr.clear(); } } if(wyn.size()==0){ cout<<"NIE"; return 0; } cout<<wyn.size()<<endl; sort(wyn.begin(), wyn.end()); for(int i=0; i<wyn.size(); i++)cout<<wyn[i]<<" "; return 0; } |