UVA193 Graph Coloring - 一般图最大独立集 -

题目链接:https://www.luogu.com.cn/problem/UVA193

题解:
注意不是二分图最大独立集和最大匹配没啥关系
直接dfs

// by SkyRainWind
#include <bits/stdc++.h>
#define mpr make_pair
#define debug() cerr<<"Yoshino\n"
#define rep(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)
#define pii pair<int,int>

using namespace std;

typedef long long ll;
typedef long long LL;

const int inf = 1e9, INF = 0x3f3f3f3f;

int mp[105][105];
int b[222],cnt=0,a[222],ans,n,m;

int check(int x){
	for(int i=1;i<=cnt;i++)
		if(mp[x][b[i]])return 0;
	return 1;
}

void dfs(int x){
	if(ans<cnt)ans=cnt,memcpy(a, b, sizeof b);
	for(int i=x+1;i<=n;i++)if(check(i)){
		b[++cnt]=i;
		dfs(i);
		--cnt;
	}
}

void solve(){
	memset(mp,0,sizeof mp);
	cnt=0;memset(a,0,sizeof a);memset(b,0,sizeof b);
	ans=0;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++){
		int x,y;scanf("%d%d",&x,&y);
		mp[x][y] = mp[y][x] = 1;
	}
	dfs(0);
	printf("%d\n",ans);
	for(int i=1;i<=ans;i++)printf("%d%c",a[i]," \n"[i == ans]);
}

signed main(){
	int te;scanf("%d",&te);
	while(te--)solve();

	return 0;
}

posted @   SkyRainWind  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示