Advertisement
Guest User

Untitled

a guest
Feb 18th, 2017
417
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.54 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int n, root, sum, v1, v2, dp[1000001];
  5. vector<int> g[1000001];
  6. void dfs(int u) {
  7. for(int v: g[u]) dfs(v), dp[u] += dp[v];
  8. if(dp[u] == sum/3 && u != root) {
  9. if(!v1) v1 = u, dp[u] = 0;
  10. else if(!v2) v2 = u, dp[u] = 0;
  11. }
  12. }
  13. int main() {
  14. scanf("%d",&n);
  15. for(int i = 1,p; i <= n; i++) {
  16. scanf("%d%d",&p,&dp[i]);
  17. sum += dp[i];
  18. g[p].push_back(i);
  19. if(p == 0) root = i;
  20. }
  21. if(sum%3) printf("-1"), exit(0);
  22. dfs(root);
  23. if(v1 && v2) printf("%d %d", v1,v2);
  24. else printf("-1");
  25. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement