CF238E.Meeting Her

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Urpal lives in a big city. He has planned to meet his lover tonight.

The city has nn junctions numbered from 11 to nn . The junctions are connected by mm directed streets, all the roads have equal length. Urpal lives in junction aa and the date is planned in a restaurant in junction bb . He wants to use public transportation to get to junction bb . There are kk bus transportation companies. At the beginning of every second, a bus from the ii -th company chooses a random shortest path between junction sis_{i} and junction tit_{i} and passes through it. There might be no path from sis_{i} to tit_{i} . In that case no bus will leave from sis_{i} to tit_{i} . If a bus passes through a junction where Urpal stands, he can get on the bus. He can also get off the bus at any junction along the path.

Now Urpal wants to know if it's possible to go to the date using public transportation in a finite amount of time (the time of travel is the sum of length of the traveled roads) and what is the minimum number of buses he should take in the worst case.

At any moment Urpal knows only his own position and the place where the date will be. When he gets on the bus he knows only the index of the company of this bus. Of course Urpal knows the city map and the the pairs (si,ti)(s_{i},t_{i}) for each company.

Note that Urpal doesn't know buses velocity.

输入格式

The first line of the input contains four integers nn , mm , aa , bb (2<=n<=100; 0<=m<=n(n1); 1<=a,b<=n; ab)(2<=n<=100; 0<=m<=n·(n-1); 1<=a,b<=n; a≠b) .

The next mm lines contain two integers each uiu_{i} and viv_{i} (1<=ui,vi<=n; uivi)(1<=u_{i},v_{i}<=n; u_{i}≠v_{i}) describing a directed road from junction uiu_{i} to junction viv_{i} . All roads in the input will be distinct.

The next line contains an integer kk (0<=k<=100)(0<=k<=100) . There will be kk lines after this, each containing two integers sis_{i} and tit_{i} (1<=si,ti<=n; siti)(1<=s_{i},t_{i}<=n; s_{i}≠t_{i}) saying there is a bus route starting at sis_{i} and ending at tit_{i} . Please note that there might be no path from sis_{i} to tit_{i} , this case is described in the problem statement.

输出格式

In the only line of output print the minimum number of buses Urpal should get on on his way in the worst case. If it's not possible to reach the destination in the worst case print -1.

输入输出样例

  • 输入#1

    7 8 1 7
    1 2
    1 3
    2 4
    3 4
    4 6
    4 5
    6 7
    5 7
    3
    2 7
    1 4
    5 7
    

    输出#1

    2
    
  • 输入#2

    4 4 1 2
    1 2
    1 3
    2 4
    3 4
    1
    1 4
    

    输出#2

    -1
    
首页