Advertisement
esraa_syam

Untitled

Jul 12th, 2024
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.12 KB | None | 0 0
  1. #include "bits/stdc++.h"
  2. using namespace std;
  3.  
  4. #define nl "\n"
  5. #define ll long long
  6. #define mod  1'000'000'007
  7. #define all(v) v.begin(), v.end()
  8. #define rall(v) v.rbegin(), v.rend()
  9. #define sz(v) (int) v.size()
  10.  
  11. template<typename T = int>
  12. istream &operator>>(istream &in, vector<T> &v) {
  13.     for (auto &x: v) in >> x;
  14.     return in;
  15. }
  16.  
  17. template<typename T = int>
  18. ostream &operator<<(ostream &out, const vector<T> &v) {
  19.     for (const T &x: v) out << x << " ";
  20.     return out;
  21. }
  22.  
  23. void Sira() {
  24.     ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
  25. #ifndef ONLINE_JUDGE
  26.     freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
  27. #endif
  28. }
  29. const int N = 1e5 + 5;
  30. vector < int > adj[N];
  31. int n , q;
  32. vector < int > dest;
  33.  
  34. void dfs(int u , int depth , int v){
  35.     for(auto & nxt : adj[u]){
  36.         if(nxt == v) continue;
  37.         dest[u] = depth;
  38.                 dfs(nxt , depth + 1 , u);
  39.     }
  40. }
  41.  
  42. void solve(){
  43.     cin >> n >> q;
  44.  
  45.     for(int i = 0 ; i < n ; i++){
  46.         adj[i].clear();
  47.     }
  48.  
  49.     dest.assign(n + 5 , 0);
  50.  
  51.     for(int i = 0 ; i < n ; i++){
  52.         int u , v;
  53.         cin >> u >> v;
  54.  
  55.         adj[u].push_back(v);
  56.         adj[v].push_back(u);
  57.     }
  58.  
  59.     vector < vector < int > > range(1e6 + 5);
  60.  
  61.     dfs(1 , -1);
  62.  
  63.  
  64.  
  65.     while(q--){
  66.         int op;
  67.         cin >> op;
  68.  
  69.         if(op == 1){
  70.             int x , l , r;
  71.             cin >> x >> l >> r;
  72.  
  73.             for(int i = l ; i <= r ; i++) range[i].push_back(x);
  74.         }else{
  75.             int x , t;
  76.             cin >> x >> t;
  77.  
  78.             int node = -1 , d = 1e9;
  79.             for(int i = 0 ; i < range[t].size() ; i++){
  80.                 cout << "range" << " " << dest[range[t][i]] - dest[x] << " ";
  81.                 if(d > abs(dest[range[t][i]] - dest[x])){
  82.                     d = dest[range[t][i]];
  83.                     node = range[t][i];
  84.                 }
  85.             }
  86.  
  87.             cout << nl;
  88.  
  89. //            cout << node << nl;
  90.  
  91.         }
  92.     }
  93.  
  94.  
  95.  
  96.  
  97.  
  98. }
  99.  
  100. int main() {
  101.     Sira();
  102.     int t = 1;
  103.     cin >> t;
  104.     while(t--){
  105.         solve();
  106.     }
  107.     return 0;
  108. }
  109.  
  110.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement