int MaximumMatch()
{
int i,ret=0;
memset(cx,0,sizeof(cx)); memset(cy,0,sizeof(cy));
for(i=1;i<=nx;i++)if(!cx[i]){memset(sy,0,sizeof(sy));ret+=path(i);}
return ret;
}
//sx,sy is used for marking whether is node is visited, in fact, sy is useless.
//cx[x] means x match cx[x], cy[y] means cy[y] match