#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ll n, m, k, x, y, w, res=0;
vector<vector<tuple<ll, ll, ll>>> arr(200005);
vector<ll> cost(200005, -1);
tuple<ll, ll, ll> h;
ll node, nodecost;
bool f=0;
set<tuple<ll, ll, ll>> st;
cin>>n>>m>>k;
while(m--){
cin>>x>>y>>w;
arr[x].emplace_back(make_tuple(y, w, 0));
arr[y].emplace_back(make_tuple(x, w, 0));
}
for(ll i=0; i<k; i++){
cin>>x>>y;
arr[x].emplace_back(make_tuple(1, y, 1));
arr[1].emplace_back(make_tuple(x, y, 1));
}
st.insert({0, 1, 0});
while(!st.empty()){
h=*st.begin();
st.erase(h);
node=get<1>(h), nodecost=get<0>(h);
if(cost[node]!=-1) continue;
if(get<2>(h)==1) res++;
cost[node]=nodecost;
for(auto s : arr[node]){
if(cost[get<0>(s)]==-1){
st.insert({nodecost+get<1>(s), get<0>(s), get<2>(s)});
}
}
}
vector<bool> vis(200005, false);
cout<<k-res;
return 0;
}
1588. Sum of All Odd Length Subarrays | 1662. Check If Two String Arrays are Equivalent |
1832. Check if the Sentence Is Pangram | 1678. Goal Parser Interpretation |
1389. Create Target Array in the Given Order | 1313. Decompress Run-Length Encoded List |
1281. Subtract the Product and Sum of Digits of an Integer | 1342. Number of Steps to Reduce a Number to Zero |
1528. Shuffle String | 1365. How Many Numbers Are Smaller Than the Current Number |
771. Jewels and Stones | 1512. Number of Good Pairs |
672. Richest Customer Wealth | 1470. Shuffle the Array |
1431. Kids With the Greatest Number of Candies | 1480. Running Sum of 1d Array |
682. Baseball Game | 496. Next Greater Element I |
232. Implement Queue using Stacks | 844. Backspace String Compare |
20. Valid Parentheses | 746. Min Cost Climbing Stairs |
392. Is Subsequence | 70. Climbing Stairs |
53. Maximum Subarray | 1527A. And Then There Were K |
1689. Partitioning Into Minimum Number Of Deci-Binary Numbers | 318. Maximum Product of Word Lengths |
448. Find All Numbers Disappeared in an Array | 1155. Number of Dice Rolls With Target Sum |