/*Code by HsonW, 11/2 NH-Hue. Just a newbie <3>
/*Toi Yeu Khanh Huyen <3>*/
#include<bits/stdc++.h>
using namespace std;
using int64=long long;
#define ll long long
const int MOD=1e9+7;
const int MAX=3e5+100;
typedef pair<int,int> ii;
vector<vector<pair<int,ll>>> g1(MAX), g2(MAX);
vector<int> c(MAX);
vector<pair<int,ll>> R;
vector<ll> dj(int n, vector<vector<pair<int,ll>>> &g){
    vector<ll>d(n+1,LLONG_MAX);
    d[1]=0;
    priority_queue<pair<ll,int>,vector<pair<ll,int>>,greater<>>pq;
    pq.push({0,1});
    while(!pq.empty()){
        auto [du,u]=pq.top(); pq.pop();
        if(du!=d[u]) continue;
        for(auto &e:g[u]){
            int v=e.first; ll w=e.second;
            if(d[v]>du+w){
                d[v]=du+w;
                pq.push({d[v],v});
            }
        }
    }
    return d;
}

signed main(){
    #define name "K Huyen"
    ios::sync_with_stdio(0);
    cin.tie(NULL);
    if(fopen(name ".inp","r")){
        freopen(name ".inp","r",stdin);
        freopen(name ".out","w",stdout);
    }
    int n,m,k; cin>>n>>m>>k;
    for(int i=0,u,v;i<m;i++){
        ll x; cin>>u>>v>>x;
        g1[u].push_back({v,x}); g1[v].push_back({u,x});
        g2[u].push_back({v,x}); g2[v].push_back({u,x});
    }
    for(int i=0,s;i<k;i++){
        ll y; cin>>s>>y;
        c[s]++;
        g2[1].push_back({s,y}); g2[s].push_back({1,y});
        R.push_back({s,y});
    }
    auto d1=dj(n,g1), d2=dj(n,g2);
    ll ans=0;
    for(int i=2;i<=n;i++){
        if(!c[i]) continue;
        if(d2[i]==d1[i]) ans+=c[i];
        else ans+=c[i]-1;
    }
    cout<<ans;
    return 0;
}
