2025-12-28 22:55:25 +09:00

51 lines
1.2 KiB
Swift

func solve() {
guard let input1 = readLine() else { return }
var NM = input1.split(separator : " ").compactMap{Int($0)}
let (N, M) = (NM[0], NM[1])
var graph: [[Int]] = Array(repeating: [], count: N+1)
var indegree: [Int] = Array(repeating: 0, count: N+1)
for _ in 1...M {
guard let input2 = readLine() else { break }
let seq: [Int] = input2.split(separator: " ").compactMap{Int($0)}
for i in 1..<seq[0] {
let (u, v) = (seq[i], seq[i+1])
graph[u].append(v)
indegree[v] += 1
}
}
var qu: [Int] = []
var idx: Int = 0
var result: [String] = []
for i in 1...N {
if indegree[i] == 0 {
qu.append(i)
}
}
while idx < qu.count {
let now: Int = qu[idx]
idx += 1
result.append(String(now))
for nxt in graph[now] {
indegree[nxt] -= 1
if indegree[nxt] == 0 {
qu.append(nxt)
}
}
}
if result.count != N {
print(0)
return
}
print(result.joined(separator: "\n"))
}
solve()