Advertisement
Guest User

Untitled

a guest
Oct 28th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. int main() {
  2. nv = readInt();
  3. for (int i = 0; i < nv-1; i++) {
  4. int u, v; u = readInt(); v = readInt();
  5. adj[u].push_back(v);
  6. }
  7. for (int i = 0; i < nv; i++) {
  8. int x; x = readInt();
  9. init[i] = x;
  10. }
  11.  
  12. memset(t2, 0x3f, sizeof t2);
  13. dfs(0);
  14. build();
  15.  
  16. int Q; Q = readInt();
  17. for (int qq = 0; qq < Q; qq++) {
  18. int k, x1int, y1int, a, b, c, d, u, v;
  19. k = readInt();
  20. x1int = readInt();
  21. y1int = readInt();
  22. a = readInt();
  23. b = readInt();
  24. c = readInt();
  25. d = readInt();
  26. u = readInt();
  27. v = readInt();
  28.  
  29. long long x = x1int, y = y1int;
  30. for (int i = 0; i < k; i++) {
  31. t1.insert(find1[(int)x], y);
  32. t1.insert(find3[(int)x], -y);
  33.  
  34. x = (a*x + b) % nv;
  35. y = (c*y + d) % mod;
  36. }
  37.  
  38. int lca = query(min(find2[u], find2[v]), max(find2[u], find2[v])+1);
  39. long long ans = 0;
  40. ans += t1.query_range(min(find1[u], find1[lca]), max(find1[u], find1[lca]));
  41. ans += t1.query_range(min(find1[v], find1[lca]), max(find1[v], find1[lca]));
  42. ans -= t1.query_range(find1[lca], find1[lca]);
  43. writeInt<long long>(ans, '\n');
  44. }
  45.  
  46. return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement