#include <stdio.h> #include <vector> #include <algorithm> #include <stack> using namespace std; int main(void){ //FILE *in; //in=fopen("mis3.in","r"); int n,m,d,i,j,k,a,tmp1,tmp2; scanf("%d%d%d",&n,&m,&d); //fscanf(in,"%d",&n); //fscanf(in,"%d",&m); //fscanf(in,"%d",&d); vector<vector<int> > lista; vector<int> ctrl_s; vector<int> s; stack<int> stos; bool has_d[n]; bool marked[n]; lista.resize(n); for(i=0;i<m;i++){ scanf("%d%d", &tmp1,&tmp2); //fscanf(in,"%d",&tmp1); //fscanf(in,"%d",&tmp2); lista[tmp1-1].push_back(tmp2-1); lista[tmp2-1].push_back(tmp1-1); } tmp1=0; for(a=0;a<1000;a++){ for(i=0;i<n;i++){ if(lista[i].size()<d){ for(j=0;j<lista[i].size();j++){ for(k=0;k<lista[lista[i][j]].size();k++){ if(lista[lista[i][j]][k]==i)lista[lista[i][j]].erase(lista[lista[i][j]].begin()+k); } } lista[i].clear(); } marked[i]=false; } } tmp1=0; for(i=0;i<n;i++){ if(!marked[i]){ stos.push(i); while(!stos.empty()){ tmp1=stos.top(); stos.pop(); if(!marked[tmp1]){ ctrl_s.push_back(tmp1); marked[tmp1]=true; for(j=0;j<lista[tmp1].size();++j) stos.push(lista[tmp1][j]); } } if(ctrl_s.size()>s.size()) s.swap(ctrl_s); ctrl_s.clear(); } } if(s.size()<=1) {printf("NIE");return 0;} else{ sort(s.begin(),s.end()); printf("%d\n",s.size()); for(i=0;i<s.size();i++) printf("%d ",s[i]+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 | #include <stdio.h> #include <vector> #include <algorithm> #include <stack> using namespace std; int main(void){ //FILE *in; //in=fopen("mis3.in","r"); int n,m,d,i,j,k,a,tmp1,tmp2; scanf("%d%d%d",&n,&m,&d); //fscanf(in,"%d",&n); //fscanf(in,"%d",&m); //fscanf(in,"%d",&d); vector<vector<int> > lista; vector<int> ctrl_s; vector<int> s; stack<int> stos; bool has_d[n]; bool marked[n]; lista.resize(n); for(i=0;i<m;i++){ scanf("%d%d", &tmp1,&tmp2); //fscanf(in,"%d",&tmp1); //fscanf(in,"%d",&tmp2); lista[tmp1-1].push_back(tmp2-1); lista[tmp2-1].push_back(tmp1-1); } tmp1=0; for(a=0;a<1000;a++){ for(i=0;i<n;i++){ if(lista[i].size()<d){ for(j=0;j<lista[i].size();j++){ for(k=0;k<lista[lista[i][j]].size();k++){ if(lista[lista[i][j]][k]==i)lista[lista[i][j]].erase(lista[lista[i][j]].begin()+k); } } lista[i].clear(); } marked[i]=false; } } tmp1=0; for(i=0;i<n;i++){ if(!marked[i]){ stos.push(i); while(!stos.empty()){ tmp1=stos.top(); stos.pop(); if(!marked[tmp1]){ ctrl_s.push_back(tmp1); marked[tmp1]=true; for(j=0;j<lista[tmp1].size();++j) stos.push(lista[tmp1][j]); } } if(ctrl_s.size()>s.size()) s.swap(ctrl_s); ctrl_s.clear(); } } if(s.size()<=1) {printf("NIE");return 0;} else{ sort(s.begin(),s.end()); printf("%d\n",s.size()); for(i=0;i<s.size();i++) printf("%d ",s[i]+1); return 0; } } |