BZOJ 2929--洞穴攀行(最大流)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ 2929--洞穴攀行(最大流)相关的知识,希望对你有一定的参考价值。

    最大流模版题。。。

题目链接:

    http://www.lydsy.com/JudgeOnline/problem.php?id=2929 

Solution

    与起点或终点连接的边流量可以无限大,其他边流量最大为1,求最大流。。。

    上模版就好了。。。。

代码

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<iostream>
#define inf 1000000000
using namespace std;
inline int read(){
    int x=0;char ch=getchar();
    while(ch<‘0‘||ch>‘9‘)ch=getchar();
    while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}
    return x;
}
int n,cnt=1,ans;
int h[205],q[205],last[205],cur[205];
struct edge{
    int to,next,v;
}e[40005];
void insert(int u,int v,int w){
    e[++cnt].to=v;e[cnt].next=last[u];last[u]=cnt;e[cnt].v=w;
    e[++cnt].to=u;e[cnt].next=last[v];last[v]=cnt;e[cnt].v=0;
}
bool bfs(){
    int head=0,tail=1;
    memset(h,-1,sizeof(h));
    h[1]=0;
    q[0]=1;
    while(head!=tail){
        int now=q[head];head++;
        for(int i=last[now];i;i=e[i].next)
            if(e[i].v&&h[e[i].to]==-1){
                h[e[i].to]=h[now]+1;
                q[tail++]=e[i].to;
            }
    }
    return h[n]!=-1;
}
int dfs(int x,int f){
    if(x==n)return f;
    int w,used=0;
    for(int i=last[x];i;i=e[i].next)
        if(h[x]+1==h[e[i].to]){
            w=f-used;
            w=dfs(e[i].to,min(e[i].v,w));
            e[i].v-=w;e[i^1].v+=w;
            used+=w;
            if(used==f)return f;
        }
    if(!used)h[x]=-1;
    return used;
}
void dinic(){
    while(bfs())
        ans+=dfs(1,inf);
}
int main(){
    n=read();
    int x;
    for(int i=1;i<n;i++){
        x=read();
        while(x--){
            int v=read();
            if(i==1||v==n)insert(i,v,1);
            else insert(i,v,inf);
        }
    }
    dinic();
    printf("%d",ans);
    return 0;
}

  

  

This passage is made by Iscream-2001.

 

以上是关于BZOJ 2929--洞穴攀行(最大流)的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ 2929: [Poi1999]洞穴攀行

bzoj3382[Usaco2004 Open]Cave Cows 3 洞穴里的牛之三*

bzoj3380[Usaco2004 Open]Cave Cows 1 洞穴里的牛之一*

BZOJ 2049: [Sdoi2008]Cave 洞穴勘测

●BZOJ 2049 [Sdoi2008]Cave洞穴勘测

bzoj2049: [Sdoi2008]Cave 洞穴勘测