tjut 3061
来源:互联网 发布:紫外线杀菌灯 知乎 编辑:程序博客网 时间:2024/06/05 19:54
#include <stdio.h> #include <string.h> #define VM 10000 #define EM 120000 #define inf 0x3f3f3f3f struct E { int to,cap,nxt; }edge[EM]; int head[VM],gap[VM],dist[VM],cur[VM],pre[VM]; int ep; void addedge (int cu,int cv,int cw) { edge[ep].to = cv; edge[ep].cap = cw; edge[ep].nxt = head[cu]; head[cu] = ep; ep ++; edge[ep].to = cu; edge[ep].cap = 0; edge[ep].nxt = head[cv]; head[cv] = ep; ep ++; } int min (int a ,int b) { return a > b ? b : a; } int sap (int src,int des,int n) { memset (dist,0,sizeof(dist)); memset (gap,0,sizeof (dist)); memcpy (cur,head,sizeof(dist)); int res = 0; int u = pre[src] = src; int aug = inf; gap[0] = n; while (dist[src] < n) { loop: for (int &i = cur[u];i != -1;i = edge[i].nxt) { int v = edge[i].to; if (edge[i].cap && dist[u] == dist[v] + 1) { aug = min (aug,edge[i].cap); pre[v] = u; u = v; if (v == des) { res += aug; for (u = pre[u];v != src;v = u,u = pre[u]) { edge[cur[u]].cap -= aug; edge[cur[u]^1].cap += aug; } aug = inf; // } goto loop; } } int mindist = n; // for (int i = head[u];i != -1;i = edge[i].nxt) { int v = edge[i].to; if (edge[i].cap && mindist > dist[v]) { cur[u] = i; mindist = dist[v]; } } if ((--gap[dist[u]]) == 0) break; dist[u] = mindist + 1; gap[dist[u]] ++; u = pre[u]; } return res; } int vis[VM]; void dfs(int u,int v) { if(u==v) return ; vis[u]=1; for(int i=head[u];i!=-1;i=edge[i].nxt) if(edge[i].cap>0&&!vis[edge[i].to]) dfs(edge[i].to,v); } int main () { int n,m,u,v,p; int src,des; int sum; while (scanf("%d %d",&n,&m)!=EOF) { ep = 0; sum=0; src = 0; des = n + 1; memset (head,-1,sizeof(head)); for(int i=1;i<=n;i++) { scanf("%d",&p); if(p>0) { addedge(src,i,p); sum+=p; } else addedge(i,des,-p); } for (int i=1; i<=m; i++) { scanf("%d%d",&u,&v); addedge(u,v,inf); } int max_flow=sap(src,des,n + 2);; printf("%d\n",sum-max_flow); } return 0; }
0 0
- tjut 3061
- tjut 5289
- tjut 5288
- tjut 5294
- tjut 2586
- tjut 5296
- tjut 5297
- tjut 5299
- tjut 5384
- tjut 5387
- tjut 5386
- tjut 5381
- tjut 5400
- tjut 5399
- tjut 5396
- tjut 5398
- tjut 5412
- tjut 5410
- 在MFC中获取控件相对位置和使按钮变灰
- 2、斐波那契数列以及青蛙跳台阶
- 单点登录的实现原理
- Fragment的初步用法
- equals函数与hash计算
- tjut 3061
- 存取之美 —— HashMap原理、源码、实践
- CSS after before 清除float
- OpenSceneGraph实现的NeHe OpenGL教程 - 第三十二课
- swift下面使用第三方Masonry 的代码
- GDB调试(一)
- IOS 调用第三方地图APP导航
- 地图标注表达式
- 基础第一天