51 lines
1.2 KiB
Swift
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() |