HDOJ 4280 - Island Transport 裸最大流(Dinic) ..申请更多栈空间...
来源:互联网 发布:mac虚拟机内存分配 编辑:程序博客网 时间:2024/04/27 23:43
题意:
有很多小岛在XY坐标系上...有些岛之间是有路径的..并且每条路劲有容量上限..问做最西(左)侧的点到最东(点)侧的点..最多能运载多少旅客过去..
题解:
这道题....我去年做网络赛的时候..写dinic..爆栈...然后就没有然后了...然后队友写sap超时....给跪..还好其他题做的不错.进了现场赛...
爆栈是HDOJ喜闻乐见的情况..现在知道在前面加语句了....我估计我以前那个dinic就算不爆栈也会超时..现在这个效率不错..不过要是数据抢了也得跪..比较和谐的方法是化成对偶图来做...还要学习...
Program:
#pragma comment(linker,"/STACK:102400000,102400000") #include<iostream>#include<algorithm>#include<stdio.h>#include<string.h>#include<math.h>#include<queue>#define MAXN 200005#define MAXM 200005#define oo 1000000007#define ll long longusing namespace std;int X[MAXN];struct Dinic{ struct node { int x,y,c,next; }line[MAXM]; int Lnum,_next[MAXN],dis[MAXN]; void initial(int n) { for (int i=0;i<=n;i++) _next[i]=-1; Lnum=-1; } void addline(int x,int y,int c) { line[++Lnum].next=_next[x],_next[x]=Lnum; line[Lnum].x=x,line[Lnum].y=y,line[Lnum].c=c; line[++Lnum].next=_next[y],_next[y]=Lnum; line[Lnum].x=y,line[Lnum].y=x,line[Lnum].c=c; } bool BFS(int s,int e) { queue<int> Q; while (!Q.empty()) Q.pop(); memset(dis,0,sizeof(dis)); dis[s]=1; Q.push(s); while (!Q.empty()) { int h,k; h=Q.front(),Q.pop(); if (h==e) return dis[e]; for (k=_next[h];k!=-1;k=line[k].next) if (line[k].c && !dis[line[k].y]) dis[line[k].y]=dis[h]+1,Q.push(line[k].y); } return false; } int dfs(int x,int flow,int e) { if (x==e) return flow; int temp,cost=0; for (int k=_next[x];k!=-1;k=line[k].next) if (line[k].c && dis[line[k].y]==dis[x]+1) { temp=dfs(line[k].y,min(flow-cost,line[k].c),e); if (temp) { line[k].c-=temp,line[k^1].c+=temp; cost+=temp; if (flow==cost) return cost; }else dis[line[k].y]=-1; } return cost; } int MaxFlow(int s,int e) { int MaxFlow=0; while (BFS(s,e)) MaxFlow+=dfs(s,oo,e); return MaxFlow; }}T;int main() { int n,m,s,e,i,x,y,c,cases; scanf("%d",&cases); while (cases--) { scanf("%d%d",&n,&m); s=e=1; for (i=1;i<=n;i++) { scanf("%d%d",&x,&y); X[i]=x; if (x<X[s]) s=i; if (x>X[e]) e=i; } T.initial(n); while (m--) { scanf("%d%d%d",&x,&y,&c); T.addline(x,y,c); } printf("%d\n",T.MaxFlow(s,e)); } return 0; }
- HDOJ 4280 - Island Transport 裸最大流(Dinic) ..申请更多栈空间...
- Island Transport hdu 4280 (最大流 dinic)
- hdu4280 Island Transport 最大流dinic
- HDOJ 题目4280 Island Transport(最大流,sap)
- HDU 4280Island Transport(裸最大流)
- hdu4280 Island Transport (网络流最大流)&(dinic算法模板)
- hdu4280 Island Transport 最大流模板Dinic算法
- 栈优化最大流-HDU-4280-Island Transport
- HDU 4280 Island Transport 最大流SAP
- HDU -- 4280 Island Transport(最大流)
- hdu 4280 Island Transport(最大流)
- hdu 4280 Island Transport (最大流)
- Hdu 4280 Island Transport(最大流)
- hdu 4280 Island Transport (最大流)
- hdu 4280 Island Transport 最大流sap
- HDU 4280 Island Transport 最大流+sap
- HDU 4280 Island Transport (最大流)
- HDU 4280 Island Transport(最大流)
- Oracle名称含义列表
- 美女薄情馆7.0.0破解VIP
- Linux2.6内核 -- 结构的初始化
- Java动态编译
- 设备模型之二 总线设备驱动
- HDOJ 4280 - Island Transport 裸最大流(Dinic) ..申请更多栈空间...
- ORACLE 中ROWNUM用法总结!
- Java调用脚本语言(JavaScript)
- 每天一个OpenGL程序 第五篇 四边形的绘制
- linux 命令行和图型界面的切换vi中保存退出常用的命令
- Android中资源文件夹res/raw和assets的使用
- 让cocos2d-x的第一个程序在android上跑起来
- 【水彩景色xp主题】_8.25
- js -- 绑定