题目列表-网络流

  1. 方格取数问题(二分图+建模技巧)

    将原图黑白染色,并保证产生矛盾的两个位置颜色不同。源点连接黑点,白点连接汇点,黑点连接与之产生矛盾的白点。通过 最大和=全局和-最小割,在建立的网络上跑最小割(最大流)即可。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    for(register int i=1;i<=M;++i){
    for(register int j=1;j<=N;++j){
    int w;
    scanf("%d",&w);
    sum+=w;
    if((i+j)&1){
    AddEdge(S,(i-1)*N+j,w);
    AddEdge((i-1)*N+j,S,INF);
    for(register int k=0;k<=3;++k){
    int tx=i+nx[k],ty=j+ny[k];
    if(tx<1||tx>M||ty<1||ty>N) continue;
    AddEdge((i-1)*N+j,(tx-1)*N+ty,INF);
    AddEdge((tx-1)*N+ty,(i-1)*N+j,0);
    }
    }
    else{
    AddEdge((i-1)*N+j,T,w);
    AddEdge(T,(i-1)*N+j,INF);
    }
    }
    }

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×