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