Submission #1083640

#TimeUsernameProblemLanguageResultExecution timeMemory
1083640LouisChengSenior Postmen (BOI14_postmen)Cpython 3
0 / 100
22 ms5980 KiB
import sys # sys.stdin = open("1.in", "r") sys.setrecursionlimit(int(5e5) + 1) n, m = map(int, input().split()) paths = [set() for _ in range(n)] for _ in range(m): a, b = map(lambda x: int(x) - 1, input().split()) paths[a].add(b) paths[b].add(a) res = [] def solve(node): while paths[node]: top = paths[node].pop() paths[top].discard(node) solve(top) res.append(node) solve(0) last = [len(res)] * n next = [len(res)] * len(res) for i in range(len(res) - 1, -1, -1): next[i] = last[res[i]] if last[res[i]] == len(res): last[res[i]] = i nested = [[]] ends = [len(res) - 1] for i in range(len(res)): if ends[-1] == i: ends.pop() print(*nested.pop()) continue nested[-1].append(res[i] + 1) if next[i] < ends[-1]: nested.append([res[i] + 1]) ends.append(next[i])
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...