#include<bits/stdc++.h> usingnamespace std; constshort MAXN = 10010; vector<int> adj[MAXN]; bool vis[MAXN]; int n, m, l; voiddfs(int u) { vis[u] = true; int siz = adj[u].size(); for(int i = 0; i < siz; ++i) { int now_point = adj[u][i]; if(!vis[now_point]) dfs(now_point); } } intmain() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int u, v; int T; cin >> T; while(T--) { for(int i = 1; i <= n; i++) adj[i].clear(); memset(vis, 0, sizeof vis);
cin >> n >> m >> l; while(m--) { cin >> u >> v; adj[u].push_back(v); } int z; while(l--) { cin >> z; dfs(z); } int ans = 0; for(int i = 1; i <= n; i++) ans += vis[i]; cout << ans << endl; } return0; }