나는 연어입니다

시간 제한2초메모리 제한1024 MB

요약
1번 마을에서 N번 마을로 가는 경로의 모든 강 구간 [l, r]이 연어 크기를 포함하는 크기의 개수를 구한다.
난이도

보통10점 중 6점

유형
그래프, 유니온 파인드, 정렬, 슬라이딩 윈도우
정답자
아직 제출이 없습니다

문제

태초에 연어들은 NN번 마을에서 태어났다. 오늘날 KK마리의 연어들은 모두 11번 마을에 모여 살고 있고, 이들은 산란기를 맞아 다시 NN번 마을로의 모험을 떠나고자 한다. 연어들이 사는 마을은 총 NN개이고, 마을들을 잇는 강은 총 MM개가 있다. 산란기의 연어들은 강을 거슬러 올라갈 힘도 충분하기에 강은 어느 방향으로든 자유롭게 다닐 수 있으며, 서로 다른 두 마을을 잇는 강은 최대 11개 존재한다.

ii번째 강의 최소 폭은 l_il\_{i}이고 최대 폭은 r_ir\_{i}이다. 만약 강의 최대 폭보다 연어의 크기가 크다면 이 강을 통과할 수 없고, 강의 최소 폭보다 작다면 강의 물살을 이기지 못할 것이다. 다시 말해, ii번 강을 통과하는 연어는 l_il\_{i}보다 크거나 같고 r_ir\_{i}보다 작거나 같은 크기를 가지고 있어야 한다.

11번 마을에서 출발하여 NN번 마을에 도착할 수 있는 연어들의 수를 구해보자.

입력

첫 번째 줄에 연어들이 사는 마을의 수 NN과 마을들을 잇는 강의 수 MM이 공백으로 구분되어 주어진다. (2≤N≤5,000;1≤M≤5,000)(2\leq N \leq 5\\,000;1\leq M\leq 5\\,000)

두 번째 줄부터 MM개의 줄에 걸쳐 마을들을 잇는 강에 대한 정보가 주어진다. 각 줄은 네 개의 정수 uu, vv, ll, rr이 공백으로 구분되어 주어지며, 이는 uu번 마을과 vv번 마을을 잇는 강의 최소 폭이 ll이고 최대 폭이 rr임을 나타낸다. (1≤u,v≤N;u≠v;1≤l≤r≤109)(1\leq u,v\leq N; u\neq v; 1\leq l \leq r \leq 10^{9})

M+2M+2번째 줄에 11번 마을에 살고 있는 연어의 수 KK가 주어진다. (1≤K≤500,000)(1\leq K \leq 500\\,000)

M+3M+3번째 줄에 KK개의 정수가 공백으로 구분되어 주어지며, 이는 연어들의 크기를 나타낸다. 각 연어의 크기는 11 이상 10910^9 이하의 정수이다.

출력

11번 마을에서 출발하여 NN번 마을에 도착할 수 있는 연어들의 수를 출력한다.

예제1

  1. 예제 1

    입력
    6 10
    1 2 2 7
    1 3 1 8
    2 3 2 4
    2 4 5 6
    4 6 5 8
    3 6 2 3
    3 5 1 1
    5 6 1 4
    2 6 7 11
    3 4 4 9
    10
    10 9 5 5 6 4 1 1 2 3
    
    예상 출력
    7