void add(int x,int y)
{
    int i;
    if(1 == y)
    {
        inti();
        for(i=1;i<=t+1;i++)
        {
            ru.id=i;
            ru.val=dp[x-1][i]+sum[x][i];                    
            right.push(ru);
        }
        return ;    
    }
    if(y+t <= m)
    {
        ru.id=y+t;
        ru.val=dp[x-1][ru.id]+sum[x][ru.id];
        right.push(ru);
    }
    
    
    ru.id=y-1;
    ru.val=dp[x-1][ru.id]-sum[x][ru.id-1];
    left.push(ru);
}
int kruskal()
{
    int k=0,i,j,ii,ans=0;
    inti();
    for(ii=0;ii<m;ii++){
           if(k==n-1)break;
           i=find(nodes[ii].x);
           j=find(nodes[ii].y);
           if(i!=j){
                    xx[k]=nodes[ii].x;
                    yy[k++]=nodes[ii].y;
                    if(nodes[ii].len>ans)ans=nodes[ii].len;
                    unionij(i,j);
           }                   
    }
    return ans;
}
Beispiel #3
0
 void main()	 
 {
     
     inti();
	 write1(0x80);
	 for(num=0;num<11;num++)
	{    
	     write2(table[num]);
		 delay(5);
 	}
	 write1(0x80+0x40);
	for(num=0;num<13;num++)
	{    
	   write2(table1[num]);
	   delay(5);
	 }
	 while(1);
	
}
void build(int mid)
{
    int i,f;
    inti();
    n=nn*2+2;
    s=nn*2+1;
    t=nn*2+2;
    for(i=1;i<=nn;i++)
    {
        add(s,i,mid);
        add(i+nn,t,mid);
        for(f=1;f<=nn;f++)
        {
            if(0 == qul[set[i]][f])
            {
                add(i,nn+f,1);
            }
        }
    }
}
int bs()
{
    int l,r,mid;
    l=0;
    r=nn+1;
    while(l != r-1)
    {
        mid=(l+r)>>1;
        inti();
        build(mid);
        if(mid*nn == isap())
        {
            l=mid;    
        }
        else
        {
            r=mid;
        }    
    }
    return l;
}