問題概要
問題ページ
-
-
C - Peaks
問題ページへ移動する
問題文
AtCoder丘陵には N 個の展望台があり、展望台 i の標高は H_i です。
また、異なる展望台どうしを結ぶ M 本の道があり、道 j は展望台 A_j と展望台 B_j を結んでいます。
展望台 i が良い展望台であるとは、展望台 i から一本の道を使って辿り着けるどの展望台よりも展望台 i の方が標高が高いことをいいます。
展望台 i から一本の道を使って辿り着ける展望台が存在しない場合も、展望台 i は良い展望台であるといいます。
良い展望台がいくつあるか求めてください。
制約
- 2 \leq N \leq 10^5
- 1 \leq M \leq 10^5
- 1 \leq H_i \leq 10^9
- 1 \leq A_i,B_i \leq N
- A_i \neq B_i
- 同じ展望台の組を結ぶ道が複数あることもある。
- 入力中の値はすべて整数である。
問題の考察
ACコード
import sys
def solve():
input = sys.stdin.readline
mod = 10 ** 9 + 7
n, m = list(map(int, input().rstrip('\n').split()))
h = list(map(int, input().rstrip('\n').split()))
ls = [True] * n
for i in range(m):
a, b = list(map(int, input().rstrip('\n').split()))
if h[a - 1] == h[b - 1]:
ls[b - 1] = ls[a - 1] = False
else:
if h[a - 1] < h[b - 1]:
a, b = b, a
ls[b - 1] = False
print(ls.count(True))
if __name__ == '__main__':
solve()