Advertisement
Guest User

Untitled

a guest
Apr 5th, 2020
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int vis[1000009], c;
  5. vector<int> adj[1000009];
  6.  
  7. int dfs(int node, int s)
  8. {
  9.     if(vis[node] != 0 && vis[node] != c)
  10.         return 0;
  11.     vis[node] = c;
  12.     if(!s)
  13.         return 1;
  14.     int ret = 1;
  15.     for(auto u : adj[node])
  16.     {
  17.         if(vis[u] != 0 && vis[u] != c)
  18.             return 0;
  19.         else if(vis[u] == 0)
  20.             ret = min(ret, dfs(u, s-1));
  21.     }
  22.     return ret;
  23. }
  24.  
  25. int main()
  26. {
  27.     int t, n, r, m, i, j, u, v, k, s, f;
  28.     cin >> t;
  29.     while(t--)
  30.     {
  31.         cin >> n >> r >> m;
  32.         c = 0;
  33.         for(i = 0; i <= n; i++)
  34.         {
  35.             adj[i].clear();
  36.             vis[i] = 0;
  37.         }
  38.         for(i = 0; i < r; i++)
  39.         {
  40.             cin >> u >> v;
  41.             adj[u].push_back(v);
  42.             adj[v].push_back(u);
  43.         }
  44.         f = 1;
  45.         for(i = 0; i < m; i++)
  46.         {
  47.             cin >> k >> s;
  48.             c++;
  49.             f = min(f, dfs(k, s));
  50.         }
  51.  
  52.         cout << (f? "Yes" : "No") << endl;
  53.     }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement