题目链接:
题目大意:给你n个点,m条边,将其分成两个集合,集合A是图的一个点覆盖,集合B也是图的一个点覆盖,要求集合A和集合B没有交集,如果有这样的两个集合,在spj的情况下输出合理解,如果没有这样的分配,输出-1. (看看能不能分成二分图)
思路:用dfs写
代码:
#include#include #include #include #include #include using namespace std;const int maxn=100005;vector x[maxn];vector ans[2];int visit[maxn];int type[maxn];int flag;void dfs(int A,int p,int t){ visit[A]=1; type[A]=t; ans[t].push_back(A); for(int i=0; i