// @adi28galaxyak
// Content: TAXI modified version
#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
typedef vector<int> VI;
typedef vector< VI > VVI;
typedef pair<int, int> pii;
#define FF first
#define SS second
#define pb(v) push_back(v)
#define mp(x,y) make_pair(x, y)
#define NITRO ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define s(n) scanf("%d",&n)
#define rep(i,start,end) for(int i = start;i<end;i++)
const int MAX = 2000;
const int inf = 1e9;
int n, p, temp;
VI taxi, passenger;
vector< vector< pair<int, int> > > graph(MAX+5);
bool FindMatch(int i, const VVI &w, VI &mr, VI &mc, VI &seen) {
for (int j = 0; j < w[i].size(); j++) {
if (w[i][j] && !seen[j]) {
seen[j] = true;
if (mc[j] < 0 || FindMatch(mc[j], w, mr, mc, seen)) {
mr[i] = j;
mc[j] = i;
return true;
}
}
}
return false;
}
int BipartiteMatching(const VVI &w, VI &mr, VI &mc) {
mr = VI(w.size(), -1);
mc = VI(w[0].size(), -1);
int ct = 0;
for (int i = 0; i < w.size(); i++) {
VI seen(w[0].size());
if (FindMatch(i, w, mr, mc, seen)) ct++;
}
return ct;
}
VI dij(int start){
VI dist(n+p+5, inf);
priority_queue<pii,vector<pii>, greater<pii> > q;
dist[start] = 0;
q.push(pii(0, start));
int status = 0;
while(!q.empty()){
status++;
pii top = q.top();
q.pop();
int v = top.SS, cost = top.FF;
if(cost <= dist[v]){
for(int i=0; i<graph[v].size(); ++i){
int v2 = graph[v][i].FF, d = graph[v][i].SS;
if(dist[v2] > dist[v] + d){
dist[v2] = dist[v] + d;
q.push(pii(dist[v2], v2));
}
}
}
}
return dist;
}
void build(VI &disTh, VVI &distTaxi, VVI &v){
VI speed, ttime;
rep(i,0,n) s(temp), speed.pb(temp);
rep(i,0,n) s(temp), ttime.pb(temp);
rep(i,0,n){
int capacity = speed[i]*ttime[i];
rep(j,0,p){
int totaldist = disTh[passenger[j]] + distTaxi[i][passenger[j]];
if(totaldist<=capacity) {
v[i][j] = 1;
}
}
}
}
int main(){
if(false) {
freopen("input01.txt","r",stdin);
//freopen("output10.txt","w",stdout);
}
NITRO;
int tt, r, x, y, d;
s(tt);
while(tt--){
s(n);s(p);s(r);
rep(i,0,MAX) graph[i].clear();
VVI v(505, VI(1005, 0));
VVI distTaxi(505);
taxi.clear();
passenger.clear();
rep(i,0,n) {
s(temp);
taxi.pb(temp);
}
rep(i,0,p){
s(temp);
passenger.pb(temp);
}
rep(i,0,r){
s(x);s(y);s(d);
graph[x].pb(mp(y, d));
graph[y].pb(mp(x, d));
}
VI distTh = dij(n+p+1); // from theatre
rep(i,0,n){ // from each taxi
distTaxi[i] = dij(taxi[i]);
}
build(distTh, distTaxi, v);
VI left(505, -1), right(1005, -1);
printf("%d\n", BipartiteMatching(v,left,right));
}
}
Ly8gQGFkaTI4Z2FsYXh5YWsKLy8gQ29udGVudDogVEFYSSBtb2RpZmllZCB2ZXJzaW9uCgojaW5jbHVkZSAiYml0cy9zdGRjKysuaCIKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHZlY3RvcjxpbnQ+IFZJOwp0eXBlZGVmIHZlY3RvcjwgVkkgPiBWVkk7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gcGlpOwojZGVmaW5lIEZGIGZpcnN0CiNkZWZpbmUgU1Mgc2Vjb25kCiNkZWZpbmUgcGIodikgcHVzaF9iYWNrKHYpCiNkZWZpbmUgbXAoeCx5KSBtYWtlX3BhaXIoeCwgeSkKCiNkZWZpbmUgTklUUk8gaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTtjaW4udGllKDApO2NvdXQudGllKDApOwojZGVmaW5lIHMobikgc2NhbmYoIiVkIiwmbikKI2RlZmluZSByZXAoaSxzdGFydCxlbmQpIGZvcihpbnQgaSA9IHN0YXJ0O2k8ZW5kO2krKykKCmNvbnN0IGludCBNQVggPSAyMDAwOwpjb25zdCBpbnQgaW5mID0gMWU5OwppbnQgbiwgcCwgdGVtcDsKVkkgdGF4aSwgcGFzc2VuZ2VyOwp2ZWN0b3I8IHZlY3RvcjwgcGFpcjxpbnQsIGludD4gPiA+IGdyYXBoKE1BWCs1KTsKCmJvb2wgRmluZE1hdGNoKGludCBpLCBjb25zdCBWVkkgJncsIFZJICZtciwgVkkgJm1jLCBWSSAmc2VlbikgewogIGZvciAoaW50IGogPSAwOyBqIDwgd1tpXS5zaXplKCk7IGorKykgewogICAgaWYgKHdbaV1bal0gJiYgIXNlZW5bal0pIHsKICAgICAgc2VlbltqXSA9IHRydWU7CiAgICAgIGlmIChtY1tqXSA8IDAgfHwgRmluZE1hdGNoKG1jW2pdLCB3LCBtciwgbWMsIHNlZW4pKSB7CiAgICAgICAgbXJbaV0gPSBqOwogICAgICAgIG1jW2pdID0gaTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgfQogIH0KICByZXR1cm4gZmFsc2U7Cn0KCmludCBCaXBhcnRpdGVNYXRjaGluZyhjb25zdCBWVkkgJncsIFZJICZtciwgVkkgJm1jKSB7CiAgbXIgPSBWSSh3LnNpemUoKSwgLTEpOwogIG1jID0gVkkod1swXS5zaXplKCksIC0xKTsKICAKICBpbnQgY3QgPSAwOwogIGZvciAoaW50IGkgPSAwOyBpIDwgdy5zaXplKCk7IGkrKykgewogICAgVkkgc2Vlbih3WzBdLnNpemUoKSk7CiAgICBpZiAoRmluZE1hdGNoKGksIHcsIG1yLCBtYywgc2VlbikpIGN0Kys7CiAgfQogIHJldHVybiBjdDsKfQoKVkkgZGlqKGludCBzdGFydCl7CiAgICBWSSBkaXN0KG4rcCs1LCBpbmYpOwogICAgcHJpb3JpdHlfcXVldWU8cGlpLHZlY3RvcjxwaWk+LCBncmVhdGVyPHBpaT4gPiBxOwogICAKICAgIGRpc3Rbc3RhcnRdID0gMDsKICAgIHEucHVzaChwaWkoMCwgc3RhcnQpKTsKICAgIGludCBzdGF0dXMgPSAwOwogICAgd2hpbGUoIXEuZW1wdHkoKSl7CiAgICAgICAgc3RhdHVzKys7CiAgICAgICAgcGlpIHRvcCA9IHEudG9wKCk7CiAgICAgICAgcS5wb3AoKTsKICAgICAgICBpbnQgdiA9IHRvcC5TUywgY29zdCA9IHRvcC5GRjsKICAgICAgICBpZihjb3N0IDw9IGRpc3Rbdl0pewogICAgICAgICAgICBmb3IoaW50IGk9MDsgaTxncmFwaFt2XS5zaXplKCk7ICsraSl7CiAgICAgICAgICAgICAgICBpbnQgdjIgPSBncmFwaFt2XVtpXS5GRiwgZCA9IGdyYXBoW3ZdW2ldLlNTOwogICAgICAgICAgICAgICAgaWYoZGlzdFt2Ml0gPiBkaXN0W3ZdICsgZCl7CiAgICAgICAgICAgICAgICAgICAgZGlzdFt2Ml0gPSBkaXN0W3ZdICsgZDsKICAgICAgICAgICAgICAgICAgICBxLnB1c2gocGlpKGRpc3RbdjJdLCB2MikpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGRpc3Q7Cn0KCnZvaWQgYnVpbGQoVkkgJmRpc1RoLCBWVkkgJmRpc3RUYXhpLCBWVkkgJnYpewogICAgVkkgc3BlZWQsIHR0aW1lOwogICAgcmVwKGksMCxuKSBzKHRlbXApLCBzcGVlZC5wYih0ZW1wKTsKICAgIHJlcChpLDAsbikgcyh0ZW1wKSwgdHRpbWUucGIodGVtcCk7CiAgICAKICAgIHJlcChpLDAsbil7CiAgICAgICAgaW50IGNhcGFjaXR5ID0gc3BlZWRbaV0qdHRpbWVbaV07CiAgICAgICAgcmVwKGosMCxwKXsKICAgICAgICAgICAgaW50IHRvdGFsZGlzdCA9IGRpc1RoW3Bhc3NlbmdlcltqXV0gKyBkaXN0VGF4aVtpXVtwYXNzZW5nZXJbal1dOwogICAgICAgICAgICBpZih0b3RhbGRpc3Q8PWNhcGFjaXR5KSB7CiAgICAgICAgICAgICAgICB2W2ldW2pdID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKXsKCWlmKGZhbHNlKSB7CgkJZnJlb3BlbigiaW5wdXQwMS50eHQiLCJyIixzdGRpbik7CgkJLy9mcmVvcGVuKCJvdXRwdXQxMC50eHQiLCJ3IixzdGRvdXQpOwoJfQoJTklUUk87CgkKCWludCB0dCwgciwgeCwgeSwgZDsKCXModHQpOwoJd2hpbGUodHQtLSl7CgkgICAgcyhuKTtzKHApO3Mocik7CgkgICAgCiAgICAgICAgcmVwKGksMCxNQVgpIGdyYXBoW2ldLmNsZWFyKCk7CgkgICAgVlZJIHYoNTA1LCBWSSgxMDA1LCAwKSk7CgkgICAgVlZJIGRpc3RUYXhpKDUwNSk7CgkgICAgdGF4aS5jbGVhcigpOwoJICAgIHBhc3Nlbmdlci5jbGVhcigpOwoJICAgIHJlcChpLDAsbikgewoJICAgICAgICBzKHRlbXApOwoJICAgICAgICB0YXhpLnBiKHRlbXApOwogICAgICAgIH0KICAgICAgICByZXAoaSwwLHApewogICAgICAgICAgICBzKHRlbXApOwogICAgICAgICAgICBwYXNzZW5nZXIucGIodGVtcCk7CiAgICAgICAgfQogICAgICAgIAoJICAgIHJlcChpLDAscil7CgkgICAgICAgIHMoeCk7cyh5KTtzKGQpOwoJICAgICAgICBncmFwaFt4XS5wYihtcCh5LCBkKSk7CgkgICAgICAgIGdyYXBoW3ldLnBiKG1wKHgsIGQpKTsKCSAgICB9CiAgICAgICAgCiAgICAgICAgVkkgZGlzdFRoID0gZGlqKG4rcCsxKTsgLy8gZnJvbSB0aGVhdHJlCiAgICAgICAgCiAgICAgICAgcmVwKGksMCxuKXsgLy8gZnJvbSBlYWNoIHRheGkKICAgICAgICAgICAgZGlzdFRheGlbaV0gPSBkaWoodGF4aVtpXSk7CiAgICAgICAgfQogICAgICAgIGJ1aWxkKGRpc3RUaCwgZGlzdFRheGksIHYpOwogICAgICAgIFZJIGxlZnQoNTA1LCAtMSksIHJpZ2h0KDEwMDUsIC0xKTsKICAgICAgICBwcmludGYoIiVkXG4iLCBCaXBhcnRpdGVNYXRjaGluZyh2LGxlZnQscmlnaHQpKTsKICAgIH0KfQ==