成品软件源码网站,那些网站hr可以做兼职,网站丢了数据库还在,杨颖做的车网站指引
jzoj 2319
题目大意#xff1a;
在平面上有n个人和出口#xff0c;一个出口只能让一个人进#xff0c;每个人只能向右向上走#xff0c;问最多让多少个人到出口
输入样例#xff1a;
6
3
2 0
3 1
1 3
4 2
0 4
5 5输出样例#xff1a;
2解题思路#xff1a;
…指引
jzoj 2319
题目大意
在平面上有n个人和出口一个出口只能让一个人进每个人只能向右向上走问最多让多少个人到出口
输入样例
6
3
2 0
3 1
1 3
4 2
0 4
5 5输出样例
2解题思路
直接用匈牙利算法详情见https://blog.csdn.net/ssllyf/article/details/86657342计算最大匹配即可
代码
#includecstdio
#includecstring
#includeiostream
using namespace std;
int t,n,xx,yy,tot,ans,x[1050],y[1050],ck[1050],p[1050],head[1050];
struct rec
{int to,next;
}a[1000500];
bool hg(int dep)//匈牙利算法
{for (int ihead[dep];i;ia[i].next)if (!p[a[i].to]){int lck[a[i].to];ck[a[i].to]dep;p[a[i].to]1;if(!l||hg(l)) return true;ck[a[i].to]l;}return false;
}
int main()
{scanf(%d %d,t,n);for (int i1;in;i)scanf(%d %d,x[i],y[i]);for (int i1;in;i){scanf(%d %d,xx,yy);for (int j1;jn;j)if (x[j]xxy[j]yy){a[tot].toi;//连边a[tot].nexthead[j];head[j]tot;}}for (int i1;in;i){memset(p,0,sizeof(p));if(hg(i)) ans;}printf(%d,ans);return 0;
}