#include #include #include #include #include #include #include #include #include #include using namespace std; class UnionFindTree{ typedef struct { int parent; int rank; }base_node; vector node; public: UnionFindTree(int n){ node.resize(n); for(int i=0; i node[y].rank){ node[y].parent = x; }else{ node[x].rank++; unite(x,y); } } }; int main(){ int n; cin >> n; vector L(n), S(n); UnionFindTree uft(n); long long sum = 0; for(int i=0; i> L[i] >> S[i]; S[i]--; sum += L[i]; uft.unite(i, S[i]); } long long hoge = 0; vector visit(n, false); for(int i=0; i