function [max_val, max_conjunto] = MaxConjunto(cgw, cgn)
    n = length(cgw);
    idx = find(cgw>=0);
    if length(idx)<0.5
        max_val = 0;
        max_conjunto = [];
        return;
    elseif length(idx)<1.5
        max_val = cgw(idx(1));
        max_conjunto = idx(1);
        return;
    end
    pesos = zeros(1,n);
    max_conjunto1 = cell(1,n);
    %fprintf('maxdbg1\n');
    idxxx = find(cgw>-0.5);
    %fprintf('num_ver = %d\n', length(idxxx));
%     for i=1:length(idxxx)
%         fprintf('%d, ', idx(i));
%     end
%     fprintf('\n');
    %fprintf('Enter = %d\n', ing);
    inicial_conjunto = [];
    for i=1:n
        if cgw(i)<0
            continue;
        end
        if length(cgn{i})<0.5
            inicial_conjunto(length(inicial_conjunto)+1) = i;
            cgw(i) = -1;
        end
    end
    for i=1:n
        if cgw(i)<0
            continue;
        end
        ngbrs = cgn{i};
        cgn1 = cgn;
        cgw1 = cgw;
        %%fprintf('i = %d\n', i);
        %fprintf('nbrs: ');
%         for j=1:length(ngbrs)
%             fprintf('%d\t', ngbrs(j));
%         end
%         fprintf('\n');
        cgw1([i ngbrs]) = -1;
        [max_val2, max_conjunto2] = MaxConjunto(cgw1, cgn1);
        pesos(i) = cgw(i) + max_val2;
        max_conjunto1{i} = [max_conjunto1{i} max_conjunto2, i];
    end
    %fprintf('Saída = %d\n', ing);
    %fprintf('maxdbg2\n');
    [max_val idx] = max(pesos);
    max_conjunto = [inicial_conjunto max_conjunto1{idx}];
end