ACM图论模板


//费用流模板
struct Edge
{
    int u,v,c,f,cost;
    Edge(){}
    Edge(int x,int y,int up,int flow,int co)
    {
        u=x,v=y,c=up,f=flow,cost=co;
    }
};
struct MCMF
{
    int ecnt,head[maxm],next[maxm*maxm];
    int s,t,dist[maxm],vis[maxm],a[maxm];
    int pre[maxm];
    queue<int >Q;
    Edge edges[maxm*maxm];
    void init(int T)
    {
        s=0,t=T;
        ecnt=0;
        for (int i =0;i<=T;i++)head[i]=-1;
    }
    void addedge(int u,int v,int c,int cost)
    {
        edges[ecnt]=Edge(u,v,c,0,cost);
        next[ecnt]=head[u];
        head[u]=ecnt++;
        edges[ecnt]=Edge(v,u,0,0,-cost);
        next[ecnt]=head[v];
        head[v]=ecnt++;
    }
    bool spfa(int &flow,int &cost)
    {
        for (int i=0;i<=t;i++)dist[i]=INF,vis[i]=0,a[i]=INF;
        dist[0]=0;
        Q.push(0);
        while (!Q.empty())
        {
            int u=Q.front();
            Q.pop();
            vis[u]=0;
            for (int i=head[u];i!=-1;i=next[i])
            {
                Edge e=edges[i];
                if (e.c>e.f&&dist[e.v]>dist[u]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
上海交通大学ACM模板是指为了方便上海交通大学ACM队伍在参加ACM国内外比赛时,准备的一份包含常用算法模板和数据结构实现的文件。这份模板ACM队伍日常训练和比赛中必备的工具和参考资料。 ACM模板通常包括多个文件,每个文件对应一个具体的算法或数据结构,并提供了相应算法的思想、伪代码和具体实现。常见的内容包括但不限于:搜索算法、图论算法、动态规划、字符串处理、数论算法、几何算法、数据结构等。 ACM模板的好处主要有以下几点: 1. 提高编程效率:ACM模板中的算法和数据结构已经经过了优化和测试,可以直接拿来使用,避免了从零开始编写代码的时间和精力消耗。 2. 加深理解:通过研究ACM模板中的算法和数据结构实现,可以更深入地了解算法的原理和应用场景,从而提升对ACM竞赛中常见问题的解决能力。 3. 快速调试:ACM比赛通常时间紧迫,要求快速解决问题。ACM模板可以提供一些已经调试通过的代码,可以直接用于ACM比赛中,减少调试的时间。 4. 统一编程习惯:ACM模板中的代码通常是经过一段时间的磨合和调试得到的,可以作为一个学习的范本,帮助学习者养成良好的编程习惯。 上海交通大学ACM模板是上海交通大学ACM队伍根据自身经验和成果整理而成的,旨在为队员提供便利和帮助。同时,ACM模板也可以随着时间的推移进行更新和完善,以适应新的算法和数据结构的发展和变化。 总的来说,上海交通大学ACM模板ACM竞赛中的宝贵资料,对于提升队伍的竞赛实力和解决问题的效率具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值