HDU 3395 Special Fish(KM算法)
来源:互联网 发布:毛利寿三郎 越知月光 编辑:程序博客网 时间:2024/05/21 21:47
#include<iostream>#include<cstring>using namespace std;const int maxn=100+5;int w[maxn][maxn],n;int lx[maxn],ly[maxn];int Left[maxn];bool s[maxn],t[maxn];int val[maxn];char map[maxn][maxn];bool match(int i){ s[i]=true; for(int j=1;j<=n;j++) if(lx[i]+ly[j]==w[i][j]&&!t[j]){ t[j]=true; if(!Left[j]||match(Left[j])){ Left[j]=i; return true; } } return false;}void update(){ int a=(1<<30); for(int i=1;i<=n;i++) if(s[i]) for(int j=1;j<=n;j++) if(!t[j]) a=min(a,lx[i]+ly[j]-w[i][j]); for(int i=1;i<=n;i++){ if(s[i]) lx[i]-=a; if(t[i]) ly[i]+=a; }}void KM(){ for(int i=1;i<=n;i++){ Left[i]=lx[i]=ly[i]=0; for(int j=1;j<=n;j++) lx[i]=max(lx[i],w[i][j]); } for(int i=1;i<=n;i++){ for(;;) { for(int j=1;j<=n;j++) s[j]=t[j]=0; if(match(i)) break;else update(); } }}int main(){ while(scanf("%d",&n)&&n) { memset(w,0,sizeof(w)); for(int i=1;i<=n;i++) scanf("%d",&val[i]); for(int i=1;i<=n;i++) scanf("%s",map[i]+1); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(map[i][j]=='1') w[i][j]=(val[i]^val[j]); KM(); int ans=0; for(int i=1;i<=n;i++) ans+=w[Left[i]][i]; printf("%d\n",ans); } return 0;}
0 0
- HDU 3395 Special Fish(KM算法)
- HDU 3395 Special Fish KM算法+邻接矩阵建图
- HDU 3395 Special Fish KM水题
- HDU 3395 Special Fish(KM)
- [ACM] HDU 3395 Special Fish (二分图最大权匹配,KM算法)
- hdu 3395 Special Fish(费用流//KM匹配)
- 【HDU】 3395 Special Fish 费用流(可KM匹配)
- HDU 3395 special fish
- hdu 3395 Special Fish
- HDU 3395 Special Fish
- HDU 3395 Special Fish
- HDU 3395 Special Fish
- hdu3395 Special Fish (KM)
- hdu(3395)Special Fish
- HDU 3395 Special Fish?费用流(虚拟边)?647★KM(加虚拟边权)
- HDU 3995 Special Fish(KM最大匹配)
- hdu3395 Special Fish(KM)
- hdu 3395 Special Fish(二分图)
- 使用Angular2及WebApi开发SPA类型的企业应用 - Part 3 项目结构
- 【Android】TextView中不同大小字体如何上下垂直居中?
- Android 仿iOS 开关SwitchButton
- CListCtrl高亮显示一行
- js闭包-个人浅理解
- HDU 3395 Special Fish(KM算法)
- LeetCode笔记:260. Single Number III
- java专有名词解释
- MyEclipse的可视化创建Hibernate项目
- 深入理解7816(3)-----关于T=0
- 匿名内部类脑补
- 微信分享
- Linux执行shell脚本方式及区别&命令后台运行
- nm-list symbols from object files