193

#include <iostream>
#include <string.h>
#include <vector>

using namespace std;

int visit[110];
int r[110];
int graph[110][110];
vector<int> vb;
int mx;
int n,k;

int judge(int a)
{
	for(int i=1;i<=n;i++)
	{
		if(graph[a][i])
		{
			if(visit[i]==1 && i!=a)
			return 0;
		}
	}

	return 1;
}

int backtrack(int node)
{
	if(node>n)
	{
		vb.clear();
		int cnt=0;
		for(int i=1;i<=n;i++)
		{
			if(visit[i])
			{
				cnt++;
				vb.push_back(i);
			}
		}
		if(cnt>mx)
		{
			mx=cnt;
			for(int i=0;i<vb.size();i++)
			r[i+1]=vb[i];
		}
	}

	else
	{
		visit[node]=0;
		backtrack(node+1);
		visit[node]=1;
		if(judge(node))
		backtrack(node+1);
		visit[node]=0;
	}
}

int main()
{
	int t,a,b;

	cin>>t;

	while(t--)
	{
		memset(visit,0,sizeof(visit));
		memset(graph,0,sizeof(graph));

		cin>>n>>k;
		for(int i=0;i<k;i++)
		{
			cin>>a>>b;

			graph[a][b]=1;
			graph[b][a]=1;
		}

		mx=0;

		backtrack(1);
		cout<<mx<<"\n";

		for(int i=1;i<=mx;i++)
		cout<<r[i]<<(i!=(mx)?" ":"\n");
	}

	return 0;
}

 

Leave a Reply

Your email address will not be published. Required fields are marked *