博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 3657最大点权独立集变形(方格取数变形)
阅读量:5245 次
发布时间:2019-06-14

本文共 2171 字,大约阅读时间需要 7 分钟。

/*分奇偶为二部图,s与奇建图,t与偶建图,权值为当前数的值,如果遇到必取的权值置为inf。奇偶建边为相邻的权值为2*(x&y);所有数的值-最小点全覆盖。置为inf意为不能割掉。奇偶边权意为可以割掉相邻的。*/#include
#include
#include
using namespace std;#define inf 0x3fffffff#define N 2600#define ii 60struct node {int u,v,w,next;}bian[N*4*2];int head[N],yong,s,t,dis[N],ma[ii][ii],id[ii][ii],f[ii][ii];;void init(){yong=0;memset(head,-1,sizeof(head));memset(dis,-1,sizeof(dis));}void addedge(int u,int v,int w) {bian[yong].u=u;bian[yong].v=v;bian[yong].w=w;bian[yong].next=head[u];head[u]=yong++;}void add(int u,int v,int w) { addedge(u,v,w); addedge(v,u,0);}void bfs() {int u,v,i;queue
q;q.push(t);dis[t]=0;while(!q.empty()) { u=q.front(); q.pop(); for(i=head[u];i!=-1;i=bian[i].next) { v=bian[i].v; if(dis[v]==-1) { dis[v]=dis[u]+1; q.push(v); } }}return ;}int ISAP() {int sum=0;bfs();int gap[N],cur[N],stac[N],top,i;memset(gap,0,sizeof(gap));for(i=s;i<=t;i++) { gap[dis[i]]++; cur[i]=head[i];}int k=s;top=0;while(dis[s]
bian[e].w) { minn=bian[e].w; index=i; } } for(i=0;i
dis[bian[i].v]&&bian[i].w) { m=dis[bian[i].v]; cur[k]=i; } if(--gap[dis[k]]==0)break; gap[dis[k]=m+1]++; if(k!=s) k=bian[stac[--top]].u; }}return sum;}int main() { int n,m,i,j,k,sum,cnt; while(scanf("%d%d%d",&n,&m,&k)!=EOF) { init(); sum=0; cnt=1; for(i=1;i<=n;i++) for(j=1;j<=m;j++) { scanf("%d",&ma[i][j]); sum+=ma[i][j]; id[i][j]=cnt++; } memset(f,0,sizeof(f)); while(k--) { scanf("%d%d",&i,&j); f[i][j]=1; } s=0; t=n*m+1; for(i=1;i<=n;i++) for(j=1;j<=m;j++) { if((i+j)&1) { if(f[i][j]) add(s,id[i][j],inf); else add(s,id[i][j],ma[i][j]); if(i>=2) add(id[i][j],id[i-1][j],2*(ma[i][j]&ma[i-1][j])); if(j>=2) add(id[i][j],id[i][j-1],2*(ma[i][j]&ma[i][j-1])); if(i<=n-1) add(id[i][j],id[i+1][j],2*(ma[i][j]&ma[i+1][j])); if(j<=m-1) add(id[i][j],id[i][j+1],2*(ma[i][j]&ma[i][j+1])); } else { if(f[i][j])add(id[i][j],t,inf); else add(id[i][j],t,ma[i][j]); } } printf("%d\n",sum-ISAP()); }return 0;}

转载于:https://www.cnblogs.com/thefirstfeeling/p/4410658.html

你可能感兴趣的文章
后台运行命令:&amp;和nohup command &amp; 以及关闭、查看后台任务
查看>>
[Source] Machine Learning Gathering/Surveys
查看>>
HTML <select> 标签
查看>>
类加载机制
查看>>
c# 读/写文件(各种格式)
查看>>
iOS中用UIWebView的loadHTMLString后图片和文字失调解决方法
查看>>
【校招面试 之 C/C++】第24题 C++ STL(六)之Map
查看>>
android基础知识杂记
查看>>
常见浏览器兼容性问题与解决方式
查看>>
Python使用subprocess的Popen要调用系统命令
查看>>
网络编程学习小结
查看>>
常见浏览器兼容性问题与解决方式
查看>>
redis.conf 配置详解
查看>>
thinkphp volist if标签 bug
查看>>
Struts2 Action
查看>>
Strut2------源码下载
查看>>
[LeetCode] 152. Maximum Product Subarray Java
查看>>
Jquery中each的三种遍历方法
查看>>
数据库
查看>>
洛谷 P1967 货车运输(克鲁斯卡尔重构树)
查看>>