首页 > 其他分享 >无源汇上下界可行流

无源汇上下界可行流

时间:2025-01-08 21:11:15浏览次数:1  
标签:cha const int while 下界 dep 无源 frz 汇上

#ifdef ONLINE_JUDGE 
#else 
#define Qiu_Cheng 
#endif 
#include <bits/stdc++.h> 
#define int long long 
using namespace std; 
// typedef long long ll; 
const int N=1e5+5,mod=1e9+7,inf=INT_MAX; 
// const int mod1=469762049,mod2=998244353,mod3=1004535809;
// const int G=3,Gi=332748118; 
// const int M=mod1*mod2;
inline int read()
{
    int x=0,f=1;
    char c=getchar();
    while(c<'0'||c>'9'){if(c=='-'){f=-1;}c=getchar();}
    while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c-'0');c=getchar();}
    return x*f;
}
inline void write(int x)
{
    if(x<0){putchar('-');x=-x;}
    if(x>9) write(x/10);
    putchar(x%10+'0');
}
int n,m;
int pos[N],dep[N];
int l[N],r[N],cha[N];
struct node{int to,c,lp;};
vector<node>g[N];
void add(int from,int to,int c)
{
    g[from].push_back((node){to,c,(int)g[to].size()});
    g[to].push_back((node){from,0,(int)g[from].size()-1});
}
void fc(int s)
{
    memset(dep,-1,sizeof(dep));
    dep[s]=0;
    queue<int>q;
    q.push(s);
    while(!q.empty())
    {
        int u=q.front();q.pop();
        for(auto v:g[u])
        {
            if(v.c>0&&dep[v.to]<0)
            {
                dep[v.to]=dep[u]+1;
                q.push(v.to);
            }
        }
    }
}
int dfs(int u,int t,int f)
{
    if(u==t||!f) return f;
    int ans=0;
    for(int &i=pos[u];i<g[u].size();i++)
    {
        auto &x=g[u][i];
        if(x.c>0&&dep[x.to]==dep[u]+1)
        {
            int frz=dfs(x.to,t,min(f,x.c));
            if(frz>0)
            {
                x.c-=frz;g[x.to][x.lp].c+=frz;
                f-=frz;ans+=frz;
                if(!f)break;
            }
        }
    }
    return ans;
}
int max_flow=0;
int dinic(int s,int t)
{
    int flow=0;
    while(1)
    {
        fc(s);
        if(dep[t]==-1) return flow;
        memset(pos,0,sizeof(pos));
        flow+=dfs(s,t,inf);
    }
}
int a[N],b[N],c[N]; 
inline void solve()
{
    cin>>n>>m;
    int S=0,T=n+1;
    for(int i=1;i<=m;i++)
    {
        int x,y;
        cin>>x>>y>>l[i]>>r[i];a[i]=x,b[i]=y;
        add(x,y,r[i]-l[i]);
        c[i]=g[y].size()-1;
        cha[x]-=l[i],cha[y]+=l[i];
    }
    int cnt=0;//要求满流
    for(int i=1;i<=n;i++)
    {
        if(cha[i]>0) add(S,i,cha[i]),cnt+=cha[i];
        else if(cha[i]<0)add(i,T,-cha[i]);
    }
    int zky=dinic(S,T);
    if(zky!=cnt){cout<<"NO"<<endl;return;}
    else
    {
        cout<<"YES"<<endl;
        for(int i=1;i<=m;i++)
            cout<<g[b[i]][c[i]].c+l[i]<<endl;
    }
}
signed main() 
{ 
#ifdef Qiu_Cheng 
    freopen("1.in","r",stdin); 
    freopen("1.out","w",stdout); 
#endif 
    // ios::sync_with_stdio(false); 
    // cin.tie(0); cout.tie(0); 
    // int QwQ; 
    // cin>>QwQ; 
    // while(QwQ--)solve(); 
    solve(); 
    return 0; 
}
//12 825076913 0 173167432
//  6666   66666  666666 
// 6    6  6   6      6 
// 6    6  6666      6 
// 6    6  6  6    6 
//  6666   6   6  6666666

//g++ -O2 -std=c++14 -Wall "-Wl,--stack= 536870912 " cao.cpp -o cao.exe

标签:cha,const,int,while,下界,dep,无源,frz,汇上
From: https://www.cnblogs.com/qc0817/p/18660587

相关文章

  • 2024秋季学期 数据结构期末实验报告(无源码版)
    前言这玩意在我看来,p用没有,纯浪费时间,但是沟槽的课有这个要求那我只能花了一点点时间水水了。如果对里面的内容感兴趣(应该不会有人没事来看这种sb玩意吧),可以私信我~实验一疏松多项式1.1问题描述使用链表结构储存疏松多项式并实现以下功能:输入并创建多项式(按指数升序或降序......
  • 【Java基础面试题035】什么是Java泛型的上下界限定符?
    回答重点Java泛型的上下界限定符用于对泛型类型参数进行范围限制,主要有上界限定符和下届限定符。1)上界限定符(?extendsT):定义:通配符?的类型必须是T或者T的子类,保证集合元素一定是T或者T的子类作用:通常用于读取操作,通配符?类型必须是T/T的子类,然后集合元素也必须是T/T的子......
  • 【Cadence射频仿真学习笔记】IC设计中电感的分析、建模与绘制(EMX电磁仿真,RFIC-GPT生成
    一、理论讲解1.电感设计的两个角度电感的设计可以从两个角度考虑,一个是外部特性,一个是内部特性。外部特性就是把电感视为一个黑盒子,带有两个端子,如果带有抽头的电感就有三个端子,需要去考虑其电感值、Q值和自谐振频率这三个参数电感的Q值表达式如下,可以发现当电感等效电阻......
  • 国标GB28181视频平台EasyCVR网络传输技巧:使用无源光网络传输做监控架构的实际表现如何
    在现代通信网络的快速发展中,PON(PassiveOpticalNetwork,无源光网络)技术因其高带宽、低成本和易于扩展的特点,成为了构建新一代接入网的关键技术。本文将详细介绍PON设备的网络规划,包括OLT(OpticalLineTerminal,光线路终端)的部署、分光器的部署、ONU(OpticalNetworkUnit,光网络单元)......
  • 过路车辆识别智慧矿山一体机矿山视频管理系统组网科普:无源光网络PON技术是什么?
    随着安防业务的不断扩展和物联网技术的飞速发展,对于大带宽、低成本、高灵活性的网络传输解决方案的需求日益增长。无源光网络(PON)技术以其独特的优势,在全球范围内的传输接入网中得到了广泛的部署,并逐渐展现出取代传统交换机接入组网的趋势,特别是在需要覆盖远距离的场景中,PON技术成......
  • 无源蜂鸣器播放小星星
    #defineL163628#defineL1_S63731#defineL263835#defineL2_S63928#defineL364021#defineL464103#defineL4_S64185#defineL564260#defineL5_S64331#defineL664400#defineL6_S......
  • Android14 如何更改无源码应用图标
    没有源码的Android应用一般就是在解析该APK时就要替换图标,如果只在Launcher替换,那么Settings中很多地方都要进行适配,修改比较麻烦,现在提供一种在源头就替换的涉及修改的文件frameworks/base/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageUtils.java......
  • 无源蜂鸣器简介
        无源蜂鸣器是一种电子发声元件,主要由永磁体、线圈、振荡片和外壳等组成。它没有内置的振荡源,需要外部输入一定频率的信号才能发声。一、工作原理:    无源蜂鸣器的工作原理是利用电磁感应现象,为音圈接入交变电流后形成的电磁铁与永磁铁相吸或相斥而推动振膜......
  • 高压开关柜中无源无线测温监测系统的作用
    高压开关柜是发电厂、变电站中确保电力系统安全可靠运行的重要设备,而柜内导线连接处的接触特性将直接影响开关柜工作的可靠性。随着使用年限的增加,因制造、安装不良或材料质量等问题都会导致接触不良而使接触电阻变大,进而导致温度升高,如不能及时发现和处理,就会导致严重的事故。......
  • 微波无源器件 4 基于高阶定向耦合器的双极化波束形成网络
    摘要:    一种Ka频段的双极化3dB定向耦合器被设计用于波束形成网络应用。所提出的解决方案对于紧凑Nolen网络。Nolen结构优于器平面和无损特别具有吸引力。两个平行方波导通过口径阵列耦合,设计用于获得两个正交极化之间的所需耦合和高隔离度。索引词:    阵列......