#include<iostream>
#include<vector>
#include<set>
#include<algorithm>
using namespace std;
#define VAR(x,n) __typeof(n) x = (n)
#define FOREACH(x,n) for(VAR(x,(n).begin());x!=(n).end();++x)
int main(){
int licz_m, licz_dr, d, a, b;
cin>>licz_m>>licz_dr>>d;
typedef set<int> wierzcholek;
vector<wierzcholek> graf;
graf.resize(licz_m+1);
for(int i=0; i<licz_dr; ++i){
cin>>a>>b;
graf[a].insert(b);
graf[b].insert(a);
}
int buf=1;
while(buf!=0){
buf = 0;
for(int i=1; i<graf.size(); ++i){
if(graf[i].size()<d && graf[i].size()!=0){
buf++;
FOREACH(it,graf[i]){
graf[*it].erase(i);
}
graf[i].clear();
}
}
}
vector<int> lista_miast;
for(int i=1; i<graf.size(); ++i){
if(graf[i].size()>=d){
lista_miast.push_back(i);
}
}
int miasto=0;
vector<int> organizatorzy;
vector<bool> miasta_odwiedzone;
miasta_odwiedzone.resize(licz_m+1);
for(int i=0; i<miasta_odwiedzone.size(); ++i){
miasta_odwiedzone[i] = false;
}
for(int i=0; i<lista_miast.size(); ++i){
buf = lista_miast[i];
if(miasta_odwiedzone[buf]==true){
continue;
}
vector<int> T_T;
T_T.push_back(buf);
miasta_odwiedzone[buf] = true;
for (int indeks = 0; indeks < T_T.size();++indeks) {
int aktualne_miasto = T_T[indeks];
FOREACH(it, graf[aktualne_miasto]){
if(miasta_odwiedzone[*it]== true){
continue;
}else{
miasta_odwiedzone[*it]=true;
T_T.push_back(*it);
}
}
}
if(T_T.size()>organizatorzy.size()){
organizatorzy = T_T;
}
}
if(organizatorzy.size()==0){
cout<<"NIE";
}else{
cout<<organizatorzy.size()<<endl;
sort(organizatorzy.begin(), organizatorzy.end());
for(int i=0; i<organizatorzy.size(); ++i){
cout<<organizatorzy[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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | #include<iostream> #include<vector> #include<set> #include<algorithm> using namespace std; #define VAR(x,n) __typeof(n) x = (n) #define FOREACH(x,n) for(VAR(x,(n).begin());x!=(n).end();++x) int main(){ int licz_m, licz_dr, d, a, b; cin>>licz_m>>licz_dr>>d; typedef set<int> wierzcholek; vector<wierzcholek> graf; graf.resize(licz_m+1); for(int i=0; i<licz_dr; ++i){ cin>>a>>b; graf[a].insert(b); graf[b].insert(a); } int buf=1; while(buf!=0){ buf = 0; for(int i=1; i<graf.size(); ++i){ if(graf[i].size()<d && graf[i].size()!=0){ buf++; FOREACH(it,graf[i]){ graf[*it].erase(i); } graf[i].clear(); } } } vector<int> lista_miast; for(int i=1; i<graf.size(); ++i){ if(graf[i].size()>=d){ lista_miast.push_back(i); } } int miasto=0; vector<int> organizatorzy; vector<bool> miasta_odwiedzone; miasta_odwiedzone.resize(licz_m+1); for(int i=0; i<miasta_odwiedzone.size(); ++i){ miasta_odwiedzone[i] = false; } for(int i=0; i<lista_miast.size(); ++i){ buf = lista_miast[i]; if(miasta_odwiedzone[buf]==true){ continue; } vector<int> T_T; T_T.push_back(buf); miasta_odwiedzone[buf] = true; for (int indeks = 0; indeks < T_T.size();++indeks) { int aktualne_miasto = T_T[indeks]; FOREACH(it, graf[aktualne_miasto]){ if(miasta_odwiedzone[*it]== true){ continue; }else{ miasta_odwiedzone[*it]=true; T_T.push_back(*it); } } } if(T_T.size()>organizatorzy.size()){ organizatorzy = T_T; } } if(organizatorzy.size()==0){ cout<<"NIE"; }else{ cout<<organizatorzy.size()<<endl; sort(organizatorzy.begin(), organizatorzy.end()); for(int i=0; i<organizatorzy.size(); ++i){ cout<<organizatorzy[i]<<" "; } } return 0; } |
English