Ankit_132

Thank U, Next

Jun 7th, 2023
334
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.59 KB | None | 0 0
  1.  
  2. #include <bits/stdc++.h>
  3.  
  4. using namespace std;
  5.  
  6. #define ll     long long
  7. #define _test   int _TEST; cin>>_TEST; while(_TEST--)
  8. #define ff     first
  9. #define ss     second
  10. #define pb     push_back
  11.  
  12.  
  13. int main()
  14. {
  15.     _test
  16.     {
  17.         int n, m, k;
  18.         cin>>n>>m>>k;
  19.  
  20.         vector<int> x(k);
  21.         vector<int> d(k);
  22.         for(auto &e: x)     cin>>e;
  23.         for(auto &e: d)     cin>>e;
  24.  
  25.         vector<vector<int>> graph(n);
  26.  
  27.         for(int i=0; i<m; i++)
  28.         {
  29.             int u, v;
  30.             cin>>u>>v;
  31.  
  32.             u--, v--;
  33.  
  34.             graph[u].pb(v);
  35.             graph[v].pb(u);
  36.         }
  37.  
  38.         vector<int> vis(n);
  39.         vector<int> vals(n);
  40.  
  41.         for(int i=0; i<k; i++)
  42.         {
  43.             vis[x[i]-1] = 1;
  44.             vals[x[i]-1] = max(vals[x[i]-1], d[i]);
  45.         }
  46.  
  47.         set<pair<int, int>> sp;
  48.  
  49.         for(int i=0; i<n; i++)
  50.             sp.insert({vals[i], i});
  51.  
  52.         while(sp.size())
  53.         {
  54.             auto e = *sp.rbegin();
  55.             sp.erase(--sp.end());
  56.  
  57.             int u = e.ss;
  58.  
  59.             if(e.ff < vals[u])      continue;
  60.             if(e.ff <= 1)           continue;
  61.  
  62.             for(auto v: graph[u])
  63.             {
  64.                 if(!vis[v])
  65.                     vis[v] = 1;
  66.  
  67.                 if(vals[v] < vals[u]-1)
  68.                 {
  69.                     vals[v] = vals[u]-1;
  70.                     sp.insert({vals[v], v});
  71.                 }
  72.             }
  73.         }
  74.  
  75.         if(*min_element(vis.begin(), vis.end()) == 1)
  76.             cout<<"YES\n";
  77.         else
  78.             cout<<"NO\n";
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment