没什么说的,仍然用一般的存储方式就好,框架:

void find(){

        count=0;

        memset(vis,0,sizeof(vis));

        for(int i=0;i<n;i++)

            if(!vis[i]){

                   count++;

                   dfs(i);

          }

}

 

void   dfs(int x){

        vis[x]=1;

        int d=f[x].size();

       for(int i=0;i<d;i++){

              int v=f[x][i];

              if(!vis[v])  dfs(v)

      }

}