#include <cstdio> #include<iostream> #include<vector> #include<queue> #include<algorithm> using namespace std; int main() { int n,m,d,a,b,i,j,l,f; scanf("%d%d%d",&n,&m,&d); vector< vector<int> > g(n); int t[n]; bool v[n]; for(i=0;i<m;i++){ v[i]=0; scanf("%d%d",&a,&b); g[a-1].push_back(b-1); g[b-1].push_back(a-1); } for(i=0;i<n;i++){ l=g[i].size(); if(l<d) t[i]=0; else t[i]=l; } for(i=0;i<n;i++){ l=g[i].size(); for(j=0;j<l;j++) if(t[g[i][j]]==0) t[i]--; if(t[i]<d) t[i]=0; } vector<int> mgm,cgm; queue<int> q; int mg=0,cg=0; for(int i=0;i<n;i++){ if(t[i]<=0) v[i]=1; else{ cg=1; q.push(i); v[i]=1; cgm.push_back(i); while(!q.empty()){ f=q.front(); l=g[f].size(); for(int j=0;j<l;j++) if(t[g[f][j]]>0&&v[g[f][j]]==0){ q.push(g[f][j]); v[g[f][j]]=1; cg++; cgm.push_back(g[f][j]); } q.pop(); } if(cg>mg){ mg=cg; mgm=cgm; } cg=0;cgm.clear(); } } if(mg>0){ sort(mgm.begin(),mgm.end()); printf("%d\n",mg); l=mg-1; for(int i=0;i<l;i++) printf("%d ",mgm[i]+1); printf("%d",mgm[l]+1); } else printf("NIE"); 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 | #include <cstdio> #include<iostream> #include<vector> #include<queue> #include<algorithm> using namespace std; int main() { int n,m,d,a,b,i,j,l,f; scanf("%d%d%d",&n,&m,&d); vector< vector<int> > g(n); int t[n]; bool v[n]; for(i=0;i<m;i++){ v[i]=0; scanf("%d%d",&a,&b); g[a-1].push_back(b-1); g[b-1].push_back(a-1); } for(i=0;i<n;i++){ l=g[i].size(); if(l<d) t[i]=0; else t[i]=l; } for(i=0;i<n;i++){ l=g[i].size(); for(j=0;j<l;j++) if(t[g[i][j]]==0) t[i]--; if(t[i]<d) t[i]=0; } vector<int> mgm,cgm; queue<int> q; int mg=0,cg=0; for(int i=0;i<n;i++){ if(t[i]<=0) v[i]=1; else{ cg=1; q.push(i); v[i]=1; cgm.push_back(i); while(!q.empty()){ f=q.front(); l=g[f].size(); for(int j=0;j<l;j++) if(t[g[f][j]]>0&&v[g[f][j]]==0){ q.push(g[f][j]); v[g[f][j]]=1; cg++; cgm.push_back(g[f][j]); } q.pop(); } if(cg>mg){ mg=cg; mgm=cgm; } cg=0;cgm.clear(); } } if(mg>0){ sort(mgm.begin(),mgm.end()); printf("%d\n",mg); l=mg-1; for(int i=0;i<l;i++) printf("%d ",mgm[i]+1); printf("%d",mgm[l]+1); } else printf("NIE"); return 0; } |