hdu 1569 方格取数(2) 最大点权独立集

来源:互联网 发布:开车 网络用语 编辑:程序博客网 时间:2024/05/04 06:19

二分图。

最大点权独立集=总权-最小点权覆盖集。

哪位大神能给一些二分图 最大点权独立集等等 的相关资料!!!!!跪谢


用网络流求解最小点权覆盖集即可,建图不讲了。


#include<cstdio>#include<iostream>#include<cstring>#include<string>#include<queue>#include<algorithm>using namespace std;#define min(a,b) a>b?b:aconst int maxn=2550,maxm=500000,inf=1000000000;struct Edge{int v,f,nxt;};int g[maxn+50];int nume;struct Edge e[maxm+50];int number[70][70];int m,n;int src,sink;bool vis[maxn+10];int dist[maxn+10];void add(int u,int v,int f){e[++nume].v=v;e[nume].f=f;e[nume].nxt=g[u];g[u]=nume;e[++nume].v=u;e[nume].f=0;e[nume].nxt=g[v];g[v]=nume;}bool is_n(int  y){if(y>=1&&y<=n) return true;return false;}bool is_m(int x){if(x>=1&&x<=m) return true;return false;}void Init(){int i,j;for(i=1;i<=m;i++)for(j=1;j<=n;j++){if((i+j)%2==0){add(0,(i-1)*n+j,number[i][j]);int tempy1=j-1;int tempy2=j+1;if(is_n(tempy1)) add((i-1)*n+j,(i-1)*n+tempy1,inf);if(is_n(tempy2)) add((i-1)*n+j,(i-1)*n+tempy2,inf);int tempx1=i-1;int tempx2=i+1;if(is_m(tempx1)) add((i-1)*n+j,(tempx1-1)*n+j,inf);if(is_m(tempx2)) add((i-1)*n+j,(tempx2-1)*n+j,inf);}else add((i-1)*n+j,sink,number[i][j]);}}void bfs(){int i;queue<int >que;memset(dist,0,sizeof(dist));while(!que.empty()) que.pop();que.push(src);vis[src]=true;while(!que.empty()){int u=que.front();que.pop();for(i=g[u];i;i=e[i].nxt){if(e[i].f && !vis[e[i].v]){dist[e[i].v]=dist[u]+1;que.push(e[i].v);vis[e[i].v]=true;}}}}int dfs(int u,int delta){int i;if(u==sink) return delta;else{int ret=0;for(i=g[u];i&δi=e[i].nxt){if(e[i].f&&dist[e[i].v]==dist[u]+1){int dd=dfs(e[i].v,min(delta,e[i].f));e[i].f-=dd;e[i^1].f+=dd;delta-=dd;ret+=dd;}}return ret;}}int dinic(){int ret=0;while(true){memset(vis,0,sizeof(vis));bfs();if(!vis[sink]) return ret;ret+=dfs(src,inf);}}int main(){int i,j;while(scanf("%d%d",&m,&n)!=EOF){nume=1;src=0;sink=n*m+1;memset(g,0,sizeof(g));int sum=0;for(i=1;i<=m;i++)for(j=1;j<=n;j++){scanf("%d",&number[i][j]);sum+=number[i][j];}Init();printf("%d\n",sum-dinic());}return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 利用图像的平移、旋转、缩放、镜像等空间几何变换实现对图像的自适应缩放、几何变换等特效 利用图像的平移、旋转、缩放、镜像等空间几何变换实现对图像的几何变换等特效 [Err]1005-Can\'tcreatetable\'item4.#sql-1238_2c\'( SAPFICO财务成本知识 财务管理分析(希金斯:第八版) 图像解压 巜人民曰报》采访张文宏,陈尔真 linux上服务器如何转发设置 图像的自适应缩放、几何变换等特效 千讯网络下载 Gsensor调试 MTKGsensor调试 展讯Gsensor调试 webrtcaec webrtc http://download.csdn.net/detail/aa1000777/7251959 分数相加和恰好为1 22 王者 前端 java正则表达式难度 2019 RARP需要不同的帧类型字段吗?ARP和RARP都使用相同的值0x0806吗? 双色球爬虫 排骨哥水柔姐 Alice做算术II SAPFICO财务成本知识 最后的黑暗之王 重生我真的不会拒绝 十方乱世,人间武圣! 我的卡牌无限强化 诸天之始:我儿叶凡有仙帝之姿 诡异巫师世界 首富从盲盒开始 诸天万界:主角都是我弟 全民投资:开局投资朱元璋! 让你代管艺人,怎么全成巨星了 我能看到收益率 重生蟠桃,被猴子偷听心声 悍腰 从解除人体限制开始