Submission #9500952


Source Code Expand

class Solver:
    def __init__(self, N, M, edges) -> None:
        self.N = N
        self.M = M
        self.edges = edges

    def find_next_node(self, current, visited):
        candidates = []
        for edge in self.edges:
            if edge[0] == current:
                candidates.append(edge[1])
            if edge[1] == current:
                candidates.append(edge[0])
        ret = []
        for node in candidates:
            bit = 2**(node - 1)
            if visited & bit == 0:
                # AND演算でゼロの場合は未訪問ノード
                ret.append(node)
        return ret

    def dfs(self, node, visited):
        """
        visitedのn番目のビットでノードnを訪ずれたか管理する
        """
        visited += 2**(node - 1)
        if visited == 2**self.N - 1:
            return 1
        movable_nodes = self.find_next_node(node, visited)
        return sum([self.dfs(next_node, visited) for next_node in movable_nodes])


    def solve(self) -> int:
        return self.dfs(1, 0)


if __name__ == "__main__":
    N, M = list(map(int, input().split()))
    edges = []
    for _ in range(M):
        edges.append(list(map(int, input().split())))

    s = Solver(N, M, edges)
    print(s.solve())

Submission Info

Submission Time
Task C - One-stroke Path
User hagino3000
Language Python (3.4.3)
Score 300
Code Size 1308 Byte
Status AC
Exec Time 82 ms
Memory 3064 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 2
AC × 15
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All sample_01.txt, sample_02.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt
Case Name Status Exec Time Memory
sample_01.txt AC 17 ms 3064 KiB
sample_02.txt AC 17 ms 3064 KiB
subtask_1_01.txt AC 17 ms 3064 KiB
subtask_1_02.txt AC 17 ms 3064 KiB
subtask_1_03.txt AC 17 ms 3064 KiB
subtask_1_04.txt AC 82 ms 3064 KiB
subtask_1_05.txt AC 17 ms 3064 KiB
subtask_1_06.txt AC 17 ms 3064 KiB
subtask_1_07.txt AC 17 ms 3064 KiB
subtask_1_08.txt AC 18 ms 3064 KiB
subtask_1_09.txt AC 18 ms 3064 KiB
subtask_1_10.txt AC 22 ms 3064 KiB
subtask_1_11.txt AC 21 ms 3064 KiB
subtask_1_12.txt AC 42 ms 3064 KiB
subtask_1_13.txt AC 68 ms 3064 KiB