一堆细节问题调了一个半小时就离谱(orz拜托了
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<cmath>
#include<iomanip>
#include<cstring>
#include<map>
using namespace std;
const int Maxn = 2e5+50;
typedef long long ll;
int n,m;
vector<int>a[Maxn];
vector<int>cn0;
vector<int>cn1;
int vis[Maxn];
inline void init(){
for(int i=1;i<=n;++i){
a[i].clear();
}
cn1.clear();
cn0.clear();
memset(vis,-1,sizeof(vis));
}
inline void dfs(int u){
//cout<<"U"<<u<<endl;
//for(int i=0;i<a[u].size();++i)cout<<"son"<<a[u][i]<<endl;
for(int i=0;i<a[u].size();++i){
if(vis[a[u][i]]!=-1)continue;
//还没走过
int c=a[u][i];
//cout<<"T"<<~c;
//cout<<"C"<<c<<endl;
vis[c]=!vis[u];
if(vis[c])cn1.push_back(c);
else cn0.push_back(c);
dfs(c);
}
}
inline void solve(){
init();
scanf("%d%d",&n,&m);
//sort(choice.begin(),choice.end(),cmp);
for(int i=1,u,v;i<=m;++i){
scanf("%d%d",&u,&v);
a[u].push_back(v);
a[v].push_back(u);
}
vis[1]=1;
cn1.push_back(1);
dfs(1);
if(cn1.size()>cn0.size()){
int len=cn0.size();
cout<<len<<endl;
for(int i=0;i<len;++i){
cout<<cn0[i]<<" ";
}
}
else{
int len=cn1.size();
cout<<len<<endl;
for(int i=0;i<len;++i){
cout<<cn1[i]<<" ";
}
}
cout<<endl;
}
int main(){
int t;
scanf("%d",&t);
for(;t;--t){
solve();//remember to init completely
}
return 0;
}