fork download
  1.  
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. #define ll long long
  5. #define pb(x) push_back(x)
  6. #define pop pop_back()
  7. using db = double;
  8. using pii = pair < int, int >;
  9. using pll = pair < ll, ll >;
  10.  
  11. #define rep(i,x,n,inc) for(i=x ; i<n ; i+=inc)
  12. #define repr(i,x,n,inc) for( i=x ; i>n ; i+=inc)
  13. #define ex exit(0)
  14. #define all(a) (a).begin(),(a).end()
  15. #define mp(a,b) make_pair(a,b)
  16. #define F first
  17. #define S second
  18. #define edl "\n"
  19. const int mod = 1e9+7;
  20. const double pi = acos(-1);
  21. const int infi = INT_MAX;
  22. const long long infl = LLONG_MAX;
  23.  
  24.  
  25. ll m,n;
  26. map<ll,bool> visit;
  27. vector <ll> lg[1001];
  28. vector <ll> adj[1001];
  29.  
  30.  
  31. ll dfs(ll u){
  32. visit[u]=true;
  33. for(auto l:adj[u]){
  34.  
  35. for(auto v:lg[l]){
  36. if(!visit[v]){
  37. dfs(v);
  38. }
  39. }
  40. }
  41.  
  42. }
  43.  
  44.  
  45.  
  46.  
  47. int helper(){
  48. int c=0;
  49.  
  50. for(ll i=1;i<=n;i++){
  51. if(!visit[i]){
  52. dfs(i);
  53. // cout<<i<<"not visited\n";
  54. c++;
  55. }
  56. }
  57. if(c!=0)c--;
  58. return c;
  59. }
  60.  
  61.  
  62. int main(){
  63. ios_base::sync_with_stdio(false);
  64. cin.tie(NULL);
  65.  
  66. int t,i,x,j,k,tem=0;
  67. cin>>n>>m;
  68.  
  69. rep(i,1,n+1,1){
  70. cin>>x;
  71. if(x==0){
  72. tem++;
  73. visit[i]=true;
  74. }
  75. while(x--){
  76. cin>>k;
  77. lg[k].push_back(i);
  78. adj[i].pb(k);
  79. }
  80. }
  81.  
  82. cout<<helper()+tem;
  83. }
  84.  
Success #stdin #stdout 0s 15280KB
stdin
5 5
1 2
2 2 3
2 3 4
2 4 5
1 5
stdout
Standard output is empty