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; }
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; }