题解
2026-08-13 14:06:03
发布于:江苏
0阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 105;
int n,m;
vector<int> g[N2];
bool vis[N2];
void dfs(int u){
vis[u] = 1;
for(auto v : g[u]){
if(!vis[v]) dfs(v);
}
}
int main(){
cin >> n >> m;
bool flag = false;
for(int i=1,x;i<=n;i++){
cin >> x;
for(int j=1,y;j<=x;j++){
cin >> y;
if(y) flag = true;
g[i].push_back(y+n);
g[y+n].push_back(i);
}
}
if(!flag){
cout << n;
return 0;
}
int cnt=0;
for(int i=1;i<=n;i++){
if(!vis[i]){
cnt++;
dfs(i);
}
}
cout << cnt-1;
return 0;
}
这里空空如也




有帮助,赞一个