首先满足是有根数,先要搞清楚每条边对应的父子关系。
设 的含义是
是
的孩子,那么根节点
不会出现在第一项。
一个节点(根节点除外)只有一个父亲,可以直接把 异或一遍,再把所有对的孩子(也就是
中的
)也异或一遍,这样一来,非根节点共出现了两次,直接就抵消了,剩下的就是根节点。
#include<bits/stdc++.h>
using namespace std;
int n;
int root;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n;
for(int i=1;i<=n;i++)
{
root^=i;
}
for(int i=1;i<n;i++)
{
int a,b;
cin>>a>>b;
root^=b;
}
cout<<root;
return 0;
}