题意:
给定n个点 m条无向边的无向图
求一个 至少包含m条边的同构子图 且是二分图
输出二分图的 X点集 和 Y点集
思路:
非正解
我们可以先随机出一组解,再判断这组解是否可行(估测可行解空间较大)
#include#include #include using namespace std; #define N 105 bool s[N]; int n, m; int Stack[N], top, nowlen; struct node{ int u,v; }edge[10096]; int edgenum; void put(bool hehe){ top = 0; for(int i=1;i<=n;i++)if(s[i] == hehe)Stack[top++] = i; printf(%d,top); if(top)sort(Stack, Stack+top); while(top--)printf( %d,Stack[top]); printf( ); } int main(){ int T, i;scanf(%d,&T); while(T--){ edgenum = nowlen = 0; scanf(%d %d,&n,&m); for(i = 0; i < m; i++) { scanf(%d %d,&edge[edgenum].u,&edge[edgenum].v); edgenum++; } while(nowlen