HDU 4309 Seikimatsu Occult Tonneru(网络流+枚举状态)
2014-07-11 18:02
302 查看
由于桥最多只有12个,所以可以直接枚举修理那个桥,注意不修理的桥可以通过一个人,而且注意图中的边有方向,对于隧道,只可以其他点到隧道起始点再到隧道,所以可以从起始点向汇点连一条流量为容量的边,而其他边只需要连容量为无穷的边,然后最大流一下。
Online Judge Online Exercise Online Teaching Online Contests Exercise Author F.A.Q Hand In Hand Online Acmers Forum | Discuss Statistical Charts Problem Archive Realtime Judge Status Authors Ranklist C/C++/Java Exams ACM Steps Go to Job Contest LiveCast ICPC@China STD Contests VIP Contests Virtual Contests DIY | Web-DIY beta Recent Contests Author 宦成颖 Mail Mail 0(0) Control Panel Control Panel Sign Out Sign Out 7月22-8月21多校联合训练期间,会根据实际负载关闭部分模块,若有不便,请谅解~ View Code Problem : 4309 ( Seikimatsu Occult Tonneru ) Judge Status : Accepted RunId : 11003913 Language : C++ Author : huanzhizun888 Code Render Status : Rendered By HDOJ C++ Code Render Version 0.01 Beta #include<iostream> #include<stdio.h> #include<memory.h> #include<cmath> #include<algorithm> using namespace std; #define MAXN 230 #define MAXE 10010 #define INF 1e9 int tmp,source,des,cnt; int n,m; int x[MAXN]; struct Edge{ int from, to; int next,cap; }edge[MAXE]; struct pi{ int no; int to; int cos; }pp[30]; struct ppi{ int no; int to; int val; int d; }pp1[1001]; int head[MAXN]; int gap[MAXN],dep[MAXN],cur[MAXN], stack[MAXN], top; int ISAP() { int cur_fLow,max_fLow,u,insert,i; memset(dep,0,sizeof(dep)); memset(gap,0,sizeof(gap)); memcpy(cur, head, n); max_fLow = 0; u = source; top = 0; while(dep[source] < n) { if(u == des) { cur_fLow = INF; for(i = 0; i < top; ++i) { if(cur_fLow > edge[stack[i]].cap) { insert = i; cur_fLow = edge[stack[i]].cap; } } for(i = 0; i < top; ++i) { edge[stack[i]].cap -= cur_fLow; edge[stack[i]^1].cap += cur_fLow; } max_fLow += cur_fLow; u = edge[ stack[top = insert]].from; } for(i = cur[u]; i != -1; i = edge[i].next) if((edge[i].cap > 0) && (dep[u] == dep[edge[i].to]+1)) break; if(i != -1) { stack[top++] = i; u = edge[i].to; } else { if(0 == --gap[dep[u]]) break; int minn = n; for(i = head[u]; i != -1; i = edge[i].next) { if(edge[i].cap > 0) minn = (minn > dep[edge[i].to]) ? (cur[u]= i, dep[edge[i].to]) : minn; } ++gap[dep[u] = minn + 1]; if(u != source) u = edge[stack[--top]].from; } } return max_fLow; } void add(int u,int v,int f) { edge[cnt].next = head[u]; edge[cnt].from = u; edge[cnt].to = v; edge[cnt].cap = f; head[u] = cnt++; edge[cnt].next = head[v]; edge[cnt].from = v; edge[cnt].to = u; edge[cnt].cap = 0; head[v] = cnt++; } int main() { int i,j,p,k,tot,a,b,c,d,cal; while(scanf("%d%d",&n,&m)!=EOF){ tot=0; cnt=0; cal=0; for(i=1;i<=n;i++){ scanf("%d",&p); x[i]=p; } for(i=0;i<m;i++){ scanf("%d%d%d%d",&a,&b,&c,&d); if(d>0){ pp[tot].no=a; pp[tot].to=b; pp[tot].cos=c; tot++; } else{ pp1[cal].no=a; pp1[cal].to=b; pp1[cal].val=c; pp1[cal++].d=d; } } k=1<<tot; a=0; b=INF; for(i=0;i<k;i++){ cnt=0; memset(head,-1,sizeof(head)); for(j=1;j<=n;j++){ add(0,j,x[j]); } for(j=0;j<cal;j++){ if(pp1[j].d<0){ add(pp1[j].no,pp1[j].to,INF); add(pp1[j].no,n+1,pp1[j].val); } else{ add(pp1[j].no,pp1[j].to,INF); } } c=0; for(j=0;j<tot;j++){ if(i&(1<<j)){ add(pp[j].no,pp[j].to,INF); c+=pp[j].cos; } else{ add(pp[j].no,pp[j].to,1); } } source=0; des=n+1; d=ISAP(); if(d>a){ a=d; b=c; } else if(d==a&&b>c){ b=c; } } if(a==0){ printf("Poor Heaven Empire\n"); } else{ printf("%d %d\n",a,b); } } return 0; } [ Copy to Clipboard ] [ Save to File] Home | Top Hangzhou Dianzi University Online Judge 3.0 Copyright © 2005-2014 HDU ACM Team. All Rights Reserved. Designer & Developer : Wang Rongtao LinLe GaoJie GanLu Total 0.001500(s) query 1, Server time : 2014-07-11 18:04:50, Gzip enabled Administration
相关文章推荐
- HDU 4309 Seikimatsu Occult Tonneru(最大流SAP+状态压缩枚举)
- hdu 4309 Seikimatsu Occult Tonneru(网络流,4级)
- hdu 4309 Seikimatsu Occult Tonneru(网络流,4级)
- 【网络流】 HDU 4309 Seikimatsu Occult Tonneru 状压枚举边
- HDU 4309 Seikimatsu Occult Tonneru(网络流-最大流)
- HDU 4309 Seikimatsu Occult Tonneru(最大流+二进制枚举)
- hdu 4309 Seikimatsu Occult Tonneru(枚举+最大流)
- HDU 4309 Seikimatsu Occult Tonneru(网络流-最大流)
- 【网络流】 HDU 4309 Seikimatsu Occult Tonneru 状压枚举边
- HDU 4309 Seikimatsu Occult Tonneru 状压枚举+网络流
- HDU 4309 Seikimatsu Occult Tonneru(最小费用最大流-mcmf)
- hdu 4309 Seikimatsu Occult Tonneru
- HDU 4309 Seikimatsu Occult Tonneru 网络流+状压
- HDU 4309 Seikimatsu Occult Tonneru (枚举+最大流)
- hdu 4309 Seikimatsu Occult Tonneru 枚举+最大流
- 【HDU】 4309 Seikimatsu Occult Tonneru
- hdu - 4309 - Seikimatsu Occult Tonneru - 网络流
- hdu 4309 Seikimatsu Occult Tonneru ----网络流
- hdu 4309 Seikimatsu Occult Tonneru 网络流
- HDU 4309 Seikimatsu Occult Tonneru