首页 > 其他分享 >【警钟撅烂】不知道第几个

【警钟撅烂】不知道第几个

时间:2024-02-07 09:55:50浏览次数:23  
标签:head const 第几个 edgeid int 警钟 dep 知道

网络流

建立虚拟源点汇点编号分别为0,n+1

然后初始化的时候从1到n....

调题调了两个小时

啊哈哈,被自己,蠢笑啦~

#include<bits/stdc++.h>
using namespace std;

const int N = 605;
const int M = 2505;

const int INF = (int)0x3f3f3f3f;

int edgeid=1;
int head[N];
struct edge
{
    int v;
    int w;
    int nxt;
}e[N*N*2];
inline void addedge(int u,int v,int w) 
{
    edgeid++;
    e[edgeid].v=v;
    e[edgeid].w=w;
    e[edgeid].nxt=head[u];
    head[u]=edgeid;
}

queue<int> q[M];

int n,m;
int st,ed;

int c[M];

int dep[N];
int cur[N];

int ans;

queue<int> qq;
bool Bfs()
{
    memset(dep,-1,sizeof(dep));
    for(int i=0;i<=n+1;i++) cur[i]=head[i]; //事故地段
    while(!qq.empty()) qq.pop();
    qq.push(st);
    dep[st]=0;
    while(!qq.empty())
    {
        int u=qq.front();
        qq.pop();
        for(int i=head[u];i;i=e[i].nxt)
        {
            int v=e[i].v;
            if(e[i].w && dep[v]==-1)
            {
                dep[v]=dep[u]+1;
                // cout<<v<<" "<<dep[v]<<endl;
                if(v==ed) return 1;
                qq.push(v);
            }
        }
    }
    return 0;
}

int Dfs(int u,int rst)
{
    if(!rst || (u==ed)) return rst;
    int sum=0;
    for(int i=cur[u];i;i=e[i].nxt)
    {
        int v=e[i].v;
        cur[u]=i;
        int f;
        if(dep[v]==dep[u]+1 && (f=Dfs(v,min(rst,e[i].w))))
        {
            e[i].w-=f;
            e[i^1].w+=f;
            sum+=f;
            rst-=f;
            if(rst==0) break;//余量优化 常数
        }
    }
    if(sum==0) dep[u]=0;//废点优化 常数
    return sum;
}


void Dinic()
{
    while(Bfs())
    {
        ans+=Dfs(st,INF);
    }
}

int main()
{
    // freopen("working.in","r",stdin);
    cin>>m>>n;
    st=0,ed=n+1;
    for(int i=1;i<=m;i++)  scanf("%d",&c[i]);
    for(int i=1;i<=n;i++)
    {
        int x;
        scanf("%d",&x);
        for(int j=1;j<=x;j++)
        {
            int z;
            scanf("%d",&z);
            q[z].push(i);
        }
        scanf("%d",&x);
        addedge(i,ed,x);
        addedge(ed,i,0);
    }
    for(int i=1;i<=m;i++)
    {
        if(q[i].empty()) continue;
        addedge(st,q[i].front(),c[i]);
        addedge(q[i].front(),st,0);
        int lst=q[i].front();
        q[i].pop();
        while(!q[i].empty())
        {
            addedge(lst,q[i].front(),INF);
            addedge(q[i].front(),lst,0);
            lst=q[i].front();
            q[i].pop();
        }
    }
    Dinic();
    cout<<ans;
    return 0;
}

标签:head,const,第几个,edgeid,int,警钟,dep,知道
From: https://www.cnblogs.com/yeyou26/p/18010636

相关文章

  • 春招早知道:这些知识点,春招前要把握好!
    本文首发自公粽hao「林行学长」,欢迎来撩,免费领取20个求职工具资源包。了解校招、分享校招知识的学长来了!离春节越近,有的同学越紧张,毕竟可能要面对”考研成绩怎么样啊“、”工作找得怎么样“等等的问候。与其紧张,不如来一起学习关于春招的知识,所谓”读书破万卷“嘛。01春招是应届生......
  • 如何在春节实现弯道超车,你知道吗?
    春节将至,大家在享受假期的同时,不要忘记假期之后就是金三银四了哦。如何在春节期间实现弯道超车?在面试之前做足准备,你有计划了么?这个春节假期不要再乱学了,现在送你一份「测试开发+人工智能精品课礼包」,跟着我们的节奏来。学习虽然没有捷径,但是有路径。这套课程是霍格沃兹测试开发学......
  • 你知道哪些JavaScript语句?
    我们在上一节课中已经讲过了JavaScript语法的顶层设计,接下来我们进入到更具体的内容。JavaScript遵循了一般编程语言的“语句-表达式”结构,多数编程语言都是这样设计的。我们在上节课讲的脚本,或者模块都是由语句列表构成的,这一节课,我们就来一起了解一下语句。在JavaScript标......
  • 你知道哪些JavaScript语句?
    我们在上一节课中已经讲过了JavaScript语法的顶层设计,接下来我们进入到更具体的内容。JavaScript遵循了一般编程语言的“语句-表达式”结构,多数编程语言都是这样设计的。我们在上节课讲的脚本,或者模块都是由语句列表构成的,这一节课,我们就来一起了解一下语句。在JavaScript......
  • 不知道起什么标题...
    DP自我整理(bushi最优子结构/后效性DP要具备满足无后效性,这是我经常忘的,或者说是不会设计。有一道例题可能是对我来说很有收益的一道题膜拜这用到了\(O(n^2)\)的时间复杂度(虽然我一直在想\(O(n)\)的做法),用每次从头到尾不断枚举,虽然时间复杂度高(bushi,做到没有对后面的获取......
  • [word] 你不知道的5个Word隐藏功能,个个超实用
    1、快速统计字数;2、添加快速访问工具栏;3、自定义快捷键;4、文档从右往左排版;5、全屏显示文档来源:中国警方在线......
  • [word] 你不知道的5个Word隐藏功能,个个超实用
    1、快速统计字数;2、添加快速访问工具栏;3、自定义快捷键;4、文档从右往左排版;5、全屏显示文档来源:中国警方在线......
  • csp2023(不知道该不该退役)游记
    本来是想一结了之的,但还是觉得心有余而力不足,我相信自己有那个实力,可惜了,正赛完全没有发挥好,我相信我的实力是在SX新初一前十的,但发挥太差了,为SX丢了个大脸。其实不该退役的,毕竟我才初一,这次是机房里面唯一一个第一次考的人,我身上背负了很多人的期待,但这不足以成为一个理由。实际......
  • 【警钟撅烂】6
    写二分图匹配匈牙利板子洛谷3386WA#2百思不得其解翻看讨论区并ctrlf发现同样情况的帖子发现原因是函数内循环遍历的是左侧点有如下感受1.wssb2.洛谷的数据怎么这么水以上,警示后人附WA代码#include<bits/stdc++.h>usingnamespacestd;constintN=505;con......
  • 采用DevOps的7个主要障碍,你一定不知道!
    尽管DevOps已经相对成熟,DevOps哲学仍然在回避甚至是最著名和最有资源的组织。一份令人震惊的Gartner报告显示,75%的DevOps项目未能实现其目标。为什么DevOps的失败率如此之高?在实施DevOps理念时,组织面临的共同挑战是什么?如何克服这些挑战?本篇文章将解决这些问题,并为企业提供可复制......