> Description
设有图4-11所示地图,每个区域代表一个省,区域中的数字代表省的编号,今将每个省涂上红®,兰(B),黄(Y),白(W)四种颜色之一,使相邻的省份不同颜色。
用1表示R,2表示B,3表示Y,4表示W,本题中第一块区域必须涂R,第一块区域颜色规定填涂1。
> Input
第一行输入n。
第2n+1行:每行表示1n个省,相邻的省用1表示(本身不与本身相邻)。
> output
输出每种可以填色的方式和总数。
> Sample Input
7
0 1 0 0 0 0 1
1 0 1 1 1 1 1
0 1 0 1 0 0 0
0 1 1 0 1 0 0
0 1 0 1 0 1 0
0 1 0 0 1 0 1
1 1 0 0 0 1 0
> Sample Output
1 2 1 3 1 3 4 (这是其中的一种,并按字典顺序输出)
…….
96 总数
> 解题过程
用深搜解题。
省市1必须填色1,所以从省市2开始枚举填四个颜色,如果与相邻的省市填了相同的颜色,继续枚举,否则直接枚举省市3……
> 代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,s[101][101],a[101],len=