题目
using namespace std
int a[10][10]
int ans = 0
int b[10]
int vis[10]
queue<int> qq
void bfs(int x) { // 对第x个二极管进行bfs搜索
qq.push(x)
vis[x] = 1
while (!qq.empty()) {
int t = qq.front()
qq.pop()
for (int i = 0
if (b[i] && !vis[i] && a[t][i]) {
qq.push(i)
vis[i] = 1
}
}
}
}
bool check(int x) { // 对第x种情况进行判断
// reset
for (int i = 0
vis[i] = 0
}
// 二进制枚举
for (int i = 0
if (x & (1<<i)) {
b[i] = 1
} else {
b[i] = 0
}
}
int cnt = 0
for (int i = 0
if (b[i] && !vis[i]) {
bfs(i)
cnt++
}
}
return cnt == 1
}
int main()
{
// 请在此输入您的代码
a[0][1] = 1, a[0][5] = 1
a[1][0] = 1, a[1][2] = 1, a[1][6] = 2
a[2][1] = 1, a[2][3] = 1, a[2][6] = 1
a[3][2] = 1, a[3][4] = 1
a[4][3] = 1, a[4][5] = 1, a[4][6] = 1
a[5][0] = 1, a[5][4] = 1, a[5][6] = 1
a[6][1] = 1, a[6][2] = 1, a[6][4] = 1, a[6][5] = 1
for (int i = 0
if (check(i)) {
ans++
}
}
cout << ans
return 0
}