codevs1227 方格取数2 注意数组啊啊啊啊啊啊啊啊啊啊
2015-12-07 20:52
363 查看
一开始T了一组RE了一组,实在找不出错来,就把数组加了一个0竟然就多A了一组。很惊讶的又加了几个0最后竟然全A了!!!
懒得做了,改的是之前的那个蚯蚓的游戏问题。还是需要拆点,至于为什么不能重复走结点,很容易想吧。
懒得做了,改的是之前的那个蚯蚓的游戏问题。还是需要拆点,至于为什么不能重复走结点,很容易想吧。
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; struct charge{ int u,v,cost,c,next; }f[500003]; int n,m,k,num=2,cnt=0,point[500003],q[500003],pre[500003],dist[500003]; bool vis[500003]; void insect(int x,int y,int co,int bei) { f[cnt].u=x;f[cnt].v=y;f[cnt].cost=bei;f[cnt].c=co; f[cnt].next=point[x];point[x]=cnt++; f[cnt].u=y;f[cnt].v=x;f[cnt].cost=-bei;f[cnt].c=0; f[cnt].next=point[y];point[y]=cnt++; } bool spfa(int begin,int end) { int mp,a,b,head=0,tail=0; memset(q,0,sizeof(q)); memset(pre,0xff,sizeof(pre)); memset(dist,0x7f,sizeof(dist)); memset(vis,0,sizeof(vis)); q[0]=begin; dist[begin]=0; vis[begin]=1; while (head<=tail) { a=q[head]; vis[a]=0; mp=point[a]; while (mp>=0) { if (f[mp].c>0){ b=f[mp].v; if (dist[b]>dist[a]+f[mp].cost) { dist[b]=dist[a]+f[mp].cost; pre[b]=mp; if (!vis[b]){vis[b]=1;tail++;q[tail]=b;} } } mp=f[mp].next; } head++; } return dist[end]!=2139062143; } int MCMF(int begin,int end) { int ans=0,mp,i,flow,flowsum=0; while (spfa(begin,end)) { flow=2139062143; for (i=pre[end];i!=-1;i=pre[f[i].u]) if (f[i].c<flow) flow=f[i].c; for (i=pre[end];i!=-1;i=pre[f[i].u]) { f[i].c-=flow; f[i^1].c+=flow; } ans+=dist[end]; flowsum+=flow; } return ans; } int main() { scanf("%d %d\n",&n,&k); int i,a,b,c,j,ff; memset(point,0xff,sizeof(point)); insect(1,2,k,0); scanf("%d",&c); num+=2; insect(2,3,1,0); insect(3,4,1,-c); for (i=2;i<=n;++i) { scanf("%d",&c); num+=2; insect(2,num-1,1,0); insect(num-2,num-1,1,0); insect(num-1,num,1,-c); } ff=4; for (i=2;i<=n;++i) { scanf("%d",&c); num+=2; insect(ff,num-1,1,0); insect(num-1,num,1,-c); for (j=2;j<=n;++j) { ff+=2; scanf("%d",&c); num+=2; insect(num-2,num-1,1,0); insect(ff,num-1,1,0); insect(num-1,num,1,-c); } ff=((i-1)*n*2)+4; }num++; for (i=1;i<=n;++i) insect((n-1)*n*2+2+i*2,num,1,0); printf("%d\n",-1*MCMF(1,num)); return 0; }
相关文章推荐
- LinearLayout和RelativeLayout 共有属性
- Android 接口的回调机制
- 本地通知
- AutoReleasePool 原理
- java中抽象类与接口的异同
- codeforce 241div2 D
- mysql远程访问
- HTML5浏览器嵌入窗口程序解决方案
- OpenJudge_P2987 小兔子捡金币
- Course(水题)
- Android代码编码格式的转换
- online_judge_1029
- 判断一个数是2的n次方
- Imageloader<2>-整体思路
- 黑马程序员——C语言——数组和字符串
- 企业版app在iOS8上无法安装的几个问题解决
- nginx连接memcached
- Servlet工作原理学习
- MQ测试:发出第一条MQ消息
- Kafka学习5_server.properties系统配置说明