艾尔重建计划
题号:NC21520
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

大主教阿塔尼斯在埃蒙被击败后开始了重建艾尔的计划,要想富,先修路。作为达拉姆的大主教,阿塔尼斯深谙此道,所以他开始重建艾尔的水晶塔折跃网络。不过好在艾尔虽然饱经战火,但是还剩下一些旧的折跃网络,所以只需要添加一些新的高速折跃网络就可以了,但是由于负责此事的一位卡莱工程师F91出了一些差错,他在重建计划中建造了一些多余的折跃网络,当有人提出异议的时候他说“I said the calculation!”(我说了算),暴露了他的Adun理工大学的文凭是花钱买的这个事实。所以收拾烂摊子的任务就到了你的身上,年轻的执政官。不过你的运气很好,F91建造的多余折跃网络都是从艾尔首都出发的,你需要尽可能的拆除这些多余的折跃网络,同时保证所有城市之间的最短折跃时间不变。

输入描述:

第一行包括三个整数n,m,k。n代表艾尔一共有n个城市。(2≤n≤105; 1≤m≤3·105; 1≤k≤10),m代表有m条旧的折跃网络,k代表F91建造的所有从首都(首都编号为1)出发的新的折跃网络。

接下来的m行中,每行包含三个数字a,b,c。分别为起点城市,终点城市,折跃时间。

再接下来的k行中,每行包含两个数字x,y。分别为终点城市,折跃时间。(0<a,b,c,x,y<10^9)

输出描述:

输出一个整数,为最多可以拆除的新的折跃网络数量。
示例1

输入

复制
5 5 3
1 2 1
2 3 2
1 3 3
3 4 4
1 5 5
3 5
4 5
5 5

输出

复制
2

备注:

旧的折跃网络是双向的 但是新的从首都出发的折跃网络是单向的