C - Many Requirements

C - Many Requirements。
C問題ながら水diffと言われている問題。
とはいえ、そこまでめちゃくちゃ難しいという感じでもない。

lis = []  
res = 0

N, M, Q = map(int, input().split())  
e = [list(map(int, input().split())) for i in range(Q)]  
lis = [0]*N


def dfs(x, y):  
    global lis, res
    if x == N:
        tmp = 0
        for a, b, c, d in e:
            if lis[b-1]-lis[a-1] == c:
                tmp += d
        res = max(res, tmp)
        return
    for i in range(y, M+1):
        lis[x] = i
        dfs(x+1, i)


dfs(0, 1)  
print(res)

計算量の試算をミスって、この解放ではどうせできないだろうと思って諦めてしまった。
とりあえず出してみてACをとっても意味がないので、そのへんの勘所ももう少し身につけたい。