import java.util.Scanner;
import java.util.ArrayList;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main
{public static void main(String[] args){// 连接关系图int[][] map = new int[][]{{0, 1, 0, 0, 0, 1, 0},{1, 0, 1, 0, 0, 0, 1},{0, 1, 0, 1, 0, 0, 1},{0, 0, 1, 0, 1, 0, 0},{0, 0, 0, 1, 0, 1, 1},{1, 0, 0, 0, 1, 0, 1},{0, 1, 1, 0, 1, 1, 0}};int count = 0;// 可能性遍历,共有2的7次方减1种可能,用8次方方便补0位for (int i = (int) Math.pow(2, 7) + 1; i < Math.pow(2, 8); i++){// 转化为二进制数组char[] cs = Integer.toBinaryString(i).substring(1).toCharArray();// 找出亮灯列表ArrayList<Integer> list = new ArrayList();for (int p = 0; p < cs.length; p++){if(cs[p] == '1') list.add(p);}// 定义已连接的列表ArrayList<Integer> linkList = new ArrayList();linkList.add(list.remove(0));// 反向遍历连接性,方便移除元素for (int i1 = 0; i1 < linkList.size(); i1++){int p1 = linkList.get(i1);for (int i2 = list.size() - 1; i2 >= 0; i2--){int p2 = list.get(i2);if (map[p1][p2] == 1){linkList.add(list.remove(i2));}}}// 如果遍历后没有未连接的元素,则通过if(list.isEmpty()) count++;}System.out.println(count);}
}