图着色问题是一个著名的NP完全问题。给定无向图G=(V,E),问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色?
但本题并不是要你解决这个着色问题,而是对给定的一种颜色分配,请你判断这是否是图着色问题的一个解。
输入在第一行给出3个整数V(0 对每种颜色分配方案,如果是图着色问题的一个解则输出 提交结果: 代码:输出格式:
Yes
,否则输出No
,每句占一行。输入样例:
6 8 3
2 1
1 3
4 6
2 5
2 4
5 4
5 6
3 6
4
1 2 3 3 1 2
4 5 6 6 4 5
1 2 3 4 5 6
2 3 4 2 3 4
输出样例:
Yes
Yes
No
No
import sys
v, e, k = list(map(int, sys.stdin.readline().split()))
mp = [[0 for j in range(v)] for i in range(v)]
for i in range(e):
a, b = list(map(int, sys.stdin.readline().split()))
mp[a - 1][b - 1] = 1
mp[b - 1][a - 1] = 1
n = int(input())
for i in range(n):
flag = True
pt = list(map(int, sys.stdin.readline().split()))
s = set(pt)
if len(s) != k:
print("No")
continue
for i in range(v):
for j in range(v):
if mp[i][j] == 1 and pt[i] == pt[j]:
flag = False
break
if flag == False:
break
if flag:
print("Yes")
else:
print("No")