#include #include #include using namespace std; #define NMAX 55 bool path[NMAX][NMAX]; int n,mmax; int dp[NMAX]; bool v[NMAX]; int seq[NMAX], seq_pos; bool dfs(int pos, int size) { int i, j, unvis; bool tv[NMAX]; unvis = 0; for (i=pos; i mmax) { mmax = size; seq_pos = 0; seq[ seq_pos ++] = pos+1; return true; } return false; } for (i=pos; i < n && unvis > 0 ; i++) { if (!v[i]) { if (unvis + size <= mmax || dp[i] + size <= mmax) { return false; } v[i] = true; unvis --; memcpy(tv, v, sizeof(v)); for (j=0; j=0; i--) { for (j=0; j