zoukankan      html  css  js  c++  java
  • codevs 1028 花店橱窗布置

    最大费用最大流。分为两个集合,流量为1,费用为给的值即可。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<queue>
    #include<cmath>
    #define maxv 202
    #define maxe 20005
    #define inf 12345678
    using namespace std;
    int ff,vv,g[maxv],prev[maxv],pree[maxv],dis[maxv];
    bool use[maxv];
    struct edge
    {
    int v,f,c,nxt;
    }e[maxe];
    int s,t,x,nume=1;
    void addedge(int u,int v,int f,int c)
    {
    e[++nume].v=v;
    e[nume].c=c;
    e[nume].f=f;
    e[nume].nxt=g[u];
    g[u]=nume;
    e[++nume].v=u;
    e[nume].c=-c;
    e[nume].f=0;
    e[nume].nxt=g[v];
    g[v]=nume;
    }
    bool spfa()
    {
    queue <int> q;
    memset(dis,0x3f,sizeof(dis));
    memset(pree,0,sizeof(pree));
    memset(prev,0,sizeof(prev));
    dis[s]=0;
    q.push(s);
    while (!q.empty())
    {
    int head=q.front();
    q.pop();
    use[head]=false;
    for (int i=g[head];i;i=e[i].nxt)
    {
    int v=e[i].v;
    if ((e[i].f>0) && (dis[v]>dis[head]+e[i].c) )
    {
    dis[v]=dis[head]+e[i].c;
    pree[v]=i;
    prev[v]=head;
    if(!use[v])
    {
    q.push(v);
    use[v]=true;
    }

    }
    }
    }
    if (dis[t]==1061109567) return false;
    return true;
    }
    int dinic()
    {
    int rq=0,u=t,deltas=inf;
    while (u!=s)
    {
    deltas=min(deltas,e[pree[u]].f);
    u=prev[u];
    }
    u=t;
    while (u!=s)
    {
    int r=pree[u];
    e[r].f=e[r].f-deltas;
    e[r^1].f=e[r^1].f+deltas;
    u=prev[u];
    }
    return dis[t]*deltas;
    }
    int main()
    {
    s=0;
    memset(g,0,sizeof(g));
    scanf("%d%d",&ff,&vv);
    t=ff+vv+1;
    for (int i=1;i<=ff;i++)
    addedge(s,i,1,0);
    for (int i=1;i<=vv;i++)
    addedge(i+ff,t,1,0);
    for (int i=1;i<=ff;i++)
    for (int j=1;j<=vv;j++)
    {
    scanf("%d",&x);
    addedge(i,j+ff,1,-x);
    }
    int maxcost=0;
    while (spfa()==true)
    maxcost=maxcost+dinic();
    printf("%d ",-maxcost);
    return 0;
    }

  • 相关阅读:
    vue中computed和watch的区别,以及适用场景
    vue中使用过的全局API
    厦门中控
    设置圆角的弧度,保持兼容性
    伪元素::after和::before
    SpringMVC
    mui问题
    错误记录
    Android错误
    Android之界面(布局文件layput)
  • 原文地址:https://www.cnblogs.com/ziliuziliu/p/5093367.html
Copyright © 2011-2022 走看看