static int f(int p, boolean[] v, int c){
		if(p==vis.length)return prim(v)+c;
		boolean[] cp=new boolean[v.length];
		int min=MAX_VALUE;
		for(int i=0;i<v.length;i++)
			for(int j=0;j<v.length;j++)
				if(v[i]&&vis[p][j])min=Math.min(min,mAdy[i][j]);
		for(int i=0;i<v.length;i++)cp[i]=v[i]||vis[p][i];
		return Math.min(f(p+1,v,c),f(p+1,cp,c+costo[p]+(min==MAX_VALUE?0:min)));
	}