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