1950G - Shuffling Songs - CodeForces Solution


bitmasks dp graphs implementation strings

Please click on ads to support us..

Python Code:

import sys
from functools import lru_cache
input = sys.stdin.readline

def inp():
    return(int(input()))
def inlt():
    return(list(map(int,input().split())))
def insr():
    s = input()
    return(list(s[:len(s) - 1]))
def invr():
    return(map(int,input().split()))

def bit_length(i):
    s = bin(i)           s = s.lstrip('-0b')     return len(s)

def main():
    m = inp()
    lis = []
    for _ in range(m):
        lis.append(input().split())
    edge = [[0] * m for _ in range(m)]
    for i in range(m):
        for j in range(i + 1, m):
            if lis[i][0] == lis[j][0] or lis[i][1] == lis[j][1]:
                edge[i][j] = 1
                edge[j][i] = 1

    @lru_cache(None)
    def dfs(mask, last = -1):
        tmp  = 0
        for i in range(m):
            if last == -1:
                tmp = max(tmp, dfs(mask | (1 << i), i))

            elif mask & (1 << i) == 0 and edge[last][i] == 1:
                tmp = max(tmp, dfs(mask | (1 << i), i))
        return tmp if tmp != 0 else bin(mask).count('1')


    
    print(m - dfs(0))


if __name__ == "__main__":
    n = inp()
    for i in range(n):
        main()


Comments

Submit
0 Comments
More Questions

1006A - Adjacent Replacements
1195C - Basketball Exercise
1206A - Choose Two Numbers
1438B - Valerii Against Everyone
822A - I'm bored with life
9A - Die Roll
1430B - Barrels
279B - Books
1374B - Multiply by 2 divide by 6
1093B - Letters Rearranging
1213C - Book Reading
1468C - Berpizza
1546B - AquaMoon and Stolen String
1353C - Board Moves
902A - Visiting a Friend
299B - Ksusha the Squirrel
1647D - Madoka and the Best School in Russia
1208A - XORinacci
1539B - Love Song
22B - Bargaining Table
1490B - Balanced Remainders
264A - Escape from Stones
1506A - Strange Table
456A - Laptops
855B - Marvolo Gaunt's Ring
1454A - Special Permutation
1359A - Berland Poker
459A - Pashmak and Garden
1327B - Princesses and Princes
1450F - The Struggling Contestant