题意:
给出n个点;编号1-n,然后后给出很多对边,直到-1 ,-1位置;
然后你可以拆出一些点,并且拆出的点可以和任意点相连;
问最少拆出几个点,可以把图连成一条直线;
思路:
暴力枚举拆出哪些点,然后判断是不是可以;
如果点拆完后,剩下的图还有环,就不行;
或者还有度数大于2的也不行;
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 20;
int g[N][N],Min;
int f[N][N], vis[N],viss[N],open[N],deg[N],tdeg[N], n;
void solve(int s) {
int sum = 0;
for(int i = 0; i < n; i++) {
if((1 << i) & s) {
open[i] = 1;sum++;tdeg[i] = 0;
for(int j = 0; j < n; j++) {
f[i][j] = f[j][i] = 0;
}
}
}
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++