求看第67行
#include <bits/stdc++.h>
//#define int long long
using namespace std;
namespace IO{
template<typename T>inline void read(T &x){
x=0;int w=1;char ch=getchar();
while (!isdigit(ch)) { if(ch=='-') w=-1;ch=getchar(); }
while (isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
x=(w==1?x:(~x+1));}
template<typename T>inline void write(T x){
if(x<0){putchar('-'),x=-x;}
if(x==0){putchar('0');return ;}
if(x>9)write(x/10);
putchar(x%10+'0');return ;}
#define writesp(x) write(x),putchar(' ')
#define writeln(x) write(x),putchar(10)
template<typename T,typename... Args>inline void read(T &x,Args &... args){ read(x),read(args...); }
template<typename T,typename... Args>inline void write_sp(T& x,Args &... args){ writesp(x),writesp(args...); }
template<typename T,typename... Args>inline void write_ln(T& x,Args &... args){ writeln(x),writeln(args...); }
template<typename T>inline int Abs(T &x){return x^(x>>31)-(x>>31);}
template<typename T>inline void Swap(T &a,T &b){a=a^b;b=a^b;a=a^b;}
template<typename T>inline int operator%(const T& a,const T& b){return a&b-1;}
#define IOS ios::sync_with_stdio(false)
#define noties cin.tie(nullptr);cout.tie(nullptr)
#define For(i,j,k) for(int i=(j);i<=(k);++i)
}using namespace IO;
namespace Union_Find_Set
{
const int maxlen=210;
int Set[maxlen];
void Reset()
{
for(int i=1;i<maxlen;i++)
Set[i]=i;
}
int Find(int t)
{
if(t!=Set[t])Set[t]=Find(Set[t]);
return Set[t];
}
void Union(int r1,int r2)
{
r1=Find(r1);r2=Find(r2);
if(r1!=r2)Set[r2]=r1;
}
}using namespace Union_Find_Set;
int N;
bool t[maxlen][maxlen];
signed main()
{
Reset();
IOS;noties;
cin>>N;
For(i,1,N)
{
int k;
while(cin>>k && k!=0)
t[i][k]=true;
}int ans=0;
For(k,1,N)For(i,1,N)For(j,1,N)
{
if(t[i][k]&&t[k][j])t[i][j]=true;
}
For(i,1,N)For(j,1,N)
{
if(t[i][j])Set[j]=Set[i];//Union(i,j);为啥不行
}
For(i,1,N)
{
if(Set[i]==i)ans++;
}
cout<<ans;
return 0;
}