#include <iostream> #include <cstdio> #include <vector> #include <cstring> #include <string> #include <set> #include <algorithm> using namespace std; int pre[10005]; int cnt[10005]; int find(int x){ if(pre[x] == x){ return x; } else{ return pre[x] = find(pre[x]); } } void join(int x,int y){ int fx = find(x); int fy = find(y); if(fx != fy){ pre[fy] = fx; } } int main(void){ int n; cin>>n; for(int i = 1; i <= 10004; i++){ pre[i] = i; } for(int i = 1; i <= n; i++){ int num; cin>>num; int sl; cin>>sl; cnt[sl] = 1; for(int j = 1; j < num; j++){ int id; cin>>id; join(sl,id); cnt[id] = 1; } } int t = 0; for(int i = 1; i <= 10000; i++){ if(cnt[i]){ t++; } } int total = 0; for(int i = 1; i <= t; i++){ if(pre[i] == i){ total++; } } printf("%d %d\n",t,total); int q; cin>>q; while(q--){ int a,b; cin>>a>>b; if(find(a) == find(b)){ printf("Y\n"); } else{ printf("N\n"); } } return 0; }
L2-024. 部落
猜你喜欢
转载自blog.csdn.net/gyh0730/article/details/80246091
今日推荐
周排行