Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- int vis[1000009], c;
- vector<int> adj[1000009];
- int dfs(int node, int s)
- {
- if(vis[node] != 0 && vis[node] != c)
- return 0;
- vis[node] = c;
- if(!s)
- return 1;
- int ret = 1;
- for(auto u : adj[node])
- {
- if(vis[u] != 0 && vis[u] != c)
- return 0;
- else if(vis[u] == 0)
- ret = min(ret, dfs(u, s-1));
- }
- return ret;
- }
- int main()
- {
- int t, n, r, m, i, j, u, v, k, s, f;
- cin >> t;
- while(t--)
- {
- cin >> n >> r >> m;
- c = 0;
- for(i = 0; i <= n; i++)
- {
- adj[i].clear();
- vis[i] = 0;
- }
- for(i = 0; i < r; i++)
- {
- cin >> u >> v;
- adj[u].push_back(v);
- adj[v].push_back(u);
- }
- f = 1;
- for(i = 0; i < m; i++)
- {
- cin >> k >> s;
- c++;
- f = min(f, dfs(k, s));
- }
- cout << (f? "Yes" : "No") << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement