差并集,理解,加模板;

差并集通俗来讲就是不断的去认新爸爸;在不断认爸爸的过程中把自己加入别人的家庭中;
操作理解:以盆友圈来理解;

1.每个人都有自己的朋友圈,假定这个朋友圈里只有自己且相互独立; (认自己做父)   void  init()   //  这是下面他的函数;
2.输入数据先将别人加进第一个人的盆友圈;(认新的父亲)

3.在输入剩余人时,如果发现 i 的父亲不是他自己,那将这个圈里的所有人的父替换为 i  的父  (认贼作父)
                         int  findfather(int a);

4.将父相同的人合并入一个圈,就是父所在的圈;        void  merge(int a,in b)
然后是模板;
int  n,v;
int father[n];
void  init() 
{
  for(int i=1;i<=n;i++)
    father[i]=i;    
}                        //认自己作父
void   getfahter(v)  
{         
 if(father[v]==v)
 return v;	
 return  father[v]=getfather(v)
}


void merge(int a, int b) {
    int t1 = findtfather(a);  
    int t2 = findtfather(b);
    if(t1 != t2) {  
        f[t2] = t1;
    }
}


然后  int findtfather(),还可以写成这样;
int findfather(int x){  
   if (x != father[x])  
    {  
        father[x] = findfather(father[x]);   
    }           
    return father[x];  
}   


在不同的题中一般变的是合并这一块;

如果输入时可以将  第一个定为基础;


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值