#include<stdio.h> #include<stdlib.h> const int maxn=1000; int e,to[maxn],next[maxn],begin[maxn]; int e1,to1[maxn*10],next1[maxn*10],begin1[maxn]; int p[maxn],fa[maxn],t[maxn]; int find(int x){ if(fa[x]!=x) fa[x]=find(fa[x]); return fa[x]; } void dfs(int x){ int i,j,k; for(i=begin[x];i;i=next[i]){ k=to[i]; dfs(k); fa[k]=x; } p[x]=1; for(i=begin1[x];i;i=next1[i]){ k=to1[i]; if(p[k]) printf("(%d %d)=%d\n",k,x,find(k)); } } int main(){ int i,j,k,m,n,u,v; scanf("%d",&n); for(i=1;i<=n;i++)fa[i]=i; for(i=1;i<=n;i++){ scanf("%d%d",&k,&m); for(j=1;j<=m;j++){ scanf("%d",&u); t[u]=1; to[++e]=u; next[e]=begin[k]; begin[k]=e; } } scanf("%d",&m); for(j=1;j<=m;j++){ scanf("%d%d",&u,&v); to1[++e1]=v; next1[e1]=begin1[u]; begin1[u]=e1; to1[++e1]=u; next1[e1]=begin1[v]; begin1[v]=e1; } for(i=1;i<=n;i++) if(t[i]==0){ dfs(i); break; } system("pause"); return 0; }