宁波有哪家公司做网站的,公司邮箱怎么登陆,seo培训机构排名,成绩查询网站怎么做最大独立集#xff1a; 顶点集V中取 K个顶点#xff0c;其两两间无连接。 最大团#xff1a; 顶点集V中取 K个顶点#xff0c;其两两间有边连接。 最大独立集补图的最大团最大团补图的最大独立集 #includeiostream
#includecstring
#includecstdio 顶点集V中取 K个顶点其两两间无连接。 最大团 顶点集V中取 K个顶点其两两间有边连接。 最大独立集补图的最大团最大团补图的最大独立集 #includeiostream
#includecstring
#includecstdio
using namespace std;int mp[110][110],mark1[505],mark2[505];
int n,m;
int cnt,maxx;void dfs(int x)
{if(xn) // 如果枚举了所有的节点{maxxcnt;memcpy(mark1,mark2,sizeof(mark2)); // 用一个更大的极大团替代原有的极大团return;}int flagtrue;for(int i1; ix; i) // 检测新加入的点是否到团中的其他节点都存在一条边{if(mark2[i] !mp[i][x]){flagfalse;break;}}if(flag) // 如果该节点满足在这个团中{mark2[x]1,cnt; // 该节点被加入到完全子图中去dfs(x1);mark2[x]0,cnt--;}if (cntn-xmaxx) // 跳过x节点进行搜索同时进行一个可行性判定dfs(x1);
}int main()
{int T;scanf(%d,T);while(T--){scanf(%d%d,n,m);memset(mark1,0,sizeof(mark2));memset(mark2,0,sizeof(mark2));maxxcnt0;for(int i0; i105; i)fill(mp[i],mp[i]105,1);for(int i1; im; i){int a,b;scanf(%d%d,a,b);mp[a][b] mp[b][a]0;}dfs(1);printf(%d\n,maxx);int k0;for(int i1; in; i){if(mark1[i]){if(k0){printf(%d,i);k1;}elseprintf( %d,i);}}puts();}return 0;
} 转载于:https://www.cnblogs.com/Aragaki/p/7554666.html