#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;
#define REP(a,n) for(int a=0;a<n;++a)
#define REP1(a,n) for(int a=1;a<=n;++a)
#define P(a) cout<<#a<<": "<<(a)<<"\n"
const int MAXN=200*1000;
int n,m,d;
vector<int> v[MAXN];
int st[MAXN];
void remove(int i){
queue<int> q;
q.push(i);
st[i]=-1;
while(!q.empty()){
int p=q.front();
q.pop();
for(auto a:v[p]){
if(st[a]<0)continue;
st[a]--;
if(st[a]<d){
q.push(a);
st[a]=-1;
}
}
}
}
int main(){
ios_base::sync_with_stdio(0);
cin>>n>>m>>d;
REP(a,m){
int i,j;
cin>>i>>j;
--i; --j;
v[i].push_back(j);
v[j].push_back(i);
++st[i];
++st[j];
}
REP(a,n){
if(st[a]<d && st[a]>0){
remove(a);
}
}
vector<int> ans;
REP(a,n){
if(st[a]>0){
vector<int> ret;
queue<int> q;
q.push(a);
st[a]=-1;
while(!q.empty()){
int p=q.front();
q.pop();
ret.push_back(p);
for(auto b:v[p]){
if(st[b]<0)continue;
if(st[b]>0)q.push(b);
st[b]=-1;
}
}
if(ret.size()>ans.size()){
ans=ret;
}
}
}
if(ans.size()<=1){
cout<<"NIE";
return 0;
}
sort(ans.begin(),ans.end());
cout<<ans.size()<<"\n";
for(auto a:ans)
cout<<a+1<<" ";
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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | #include <iostream> #include <queue> #include <algorithm> using namespace std; #define REP(a,n) for(int a=0;a<n;++a) #define REP1(a,n) for(int a=1;a<=n;++a) #define P(a) cout<<#a<<": "<<(a)<<"\n" const int MAXN=200*1000; int n,m,d; vector<int> v[MAXN]; int st[MAXN]; void remove(int i){ queue<int> q; q.push(i); st[i]=-1; while(!q.empty()){ int p=q.front(); q.pop(); for(auto a:v[p]){ if(st[a]<0)continue; st[a]--; if(st[a]<d){ q.push(a); st[a]=-1; } } } } int main(){ ios_base::sync_with_stdio(0); cin>>n>>m>>d; REP(a,m){ int i,j; cin>>i>>j; --i; --j; v[i].push_back(j); v[j].push_back(i); ++st[i]; ++st[j]; } REP(a,n){ if(st[a]<d && st[a]>0){ remove(a); } } vector<int> ans; REP(a,n){ if(st[a]>0){ vector<int> ret; queue<int> q; q.push(a); st[a]=-1; while(!q.empty()){ int p=q.front(); q.pop(); ret.push_back(p); for(auto b:v[p]){ if(st[b]<0)continue; if(st[b]>0)q.push(b); st[b]=-1; } } if(ret.size()>ans.size()){ ans=ret; } } } if(ans.size()<=1){ cout<<"NIE"; return 0; } sort(ans.begin(),ans.end()); cout<<ans.size()<<"\n"; for(auto a:ans) cout<<a+1<<" "; return 0; } |
English