L2-023 图着色问题(Python3)

图着色问题是一个著名的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

提交结果:

L2-023 图着色问题(Python3)_第1张图片

代码:

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")

你可能感兴趣的:(天梯赛,PTA,python,PTA,python,天梯赛)