poj1330

来源:互联网 发布:淘宝访客只有二三十 编辑:程序博客网 时间:2024/06/07 11:31
# include <iostream># include <cstdio># include <cstring># include <string># include <cmath># include <vector># include <map># include <queue># include <cstdlib># define MAXN 500001using namespace std;int x,y,t,n,s,ans;int vis[MAXN],fa[MAXN];vector <int> vec[MAXN];int find(int x){    return (x == fa[x]) ? x : fa[x] = find(fa[x]);}void dfs(int u){    int i, v;    for(i = 0; i < vec[u].size(); i++)    {        v = vec[u][i];        dfs(v);        vis[v]=1;        fa[v] = u;    }    if(u==x && vis[y])       ans=find(y);    if(u==y && vis[x])        ans=find(x);}int main(){    cin>>t;    while(t--)    {        cin>>n;        memset(vis,0,sizeof vis);        for(int i = 1; i < n; i++)        {            cin>>x>>y;            vis[y]=1;            vec[x].push_back(y);        }        cin>>x>>y;        for(int i=1; i<=n; i++)        if(vis[i]==0)        {            s=i;            fa[s]=s;            break;        }        memset(vis,0,sizeof vis);        for(int i=1;i<=n;i++) fa[i]=i;        dfs(s);        cout<<ans<<endl;        for(int i=1;i<=n;i++) vec[i].clear();    }    return 0;}/*152 33 43 11 53 5*/
原创粉丝点击