hdu5294 Tricks Device 最短路+最小割 多校联合第一场

华科软院研究生第一学期的事项(奖学金、学业、考试等) 奖助 研究生补助 每月500,全年共6000元 每个月月底学院会打到银行卡里 碰上开学、过年会延后发放 17年10月底发了9、10两个月的钱 18年3月底发了2、3月的钱 学业奖学金 17届全日制每人都有 按照考研最后综合成绩排名 前16 10000 前80 8000 其他 4000 大概11月底发 注意:第一年如果有挂科的话,第二年就不能参加学业奖学金评... 阅读详情

Tricks Device

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 66    Accepted Submission(s): 14


Problem Description
Innocent Wu follows Dumb Zhang into a ancient tomb. Innocent Wu’s at the entrance of the tomb while Dumb Zhang’s at the end of it. The tomb is made up of many chambers, the total number is N. And there are M channels connecting the chambers. Innocent Wu wants to catch up Dumb Zhang to find out the answers of some questions, however, it’s Dumb Zhang’s intention to keep Innocent Wu in the dark, to do which he has to stop Innocent Wu from getting him. Only via the original shortest ways from the entrance to the end of the tomb costs the minimum time, and that’s the only chance Innocent Wu can catch Dumb Zhang.
Unfortunately, Dumb Zhang masters the art of becoming invisible(奇门遁甲) and tricks devices of this tomb, he can cut off the connections between chambers by using them. Dumb Zhang wanders how many channels at least he has to cut to stop Innocent Wu. And Innocent Wu wants to know after how many channels at most Dumb Zhang cut off Innocent Wu still has the chance to catch Dumb Zhang.
 

Input
There are multiple test cases. Please process till EOF.
For each case,the first line must includes two integers, N(<=2000), M(<=60000). N is the total number of the chambers, M is the total number of the channels.
In the following M lines, every line must includes three numbers, and use ai、bi、li as channel i connecting chamber ai and bi(1<=ai,bi<=n), it costs li(0<li<=100) minute to pass channel i.
The entrance of the tomb is at the chamber one, the end of tomb is at the chamber N.
 

Output
Output two numbers to stand for the answers of Dumb Zhang and Innocent Wu’s questions.
 

Sample Input
8 9 1 2 2 2 3 2 2 4 1 3 5 3 4 5 4 5 8 1 1 6 2 6 7 5 7 8 1
 

Sample Output
2 6

  无向图N个点M条边,输出最少删掉几条边破坏最短路,最多删掉几条边不破坏最短路。

  最多删几条边不破坏最短路的答案是M减去最短路里边数最少的那个,最少删掉几条边破坏最短路的做法是把所有在最短路上的边重新建图,变成流量为1的网络流,求最小割。

  在求最短路的时候记录下上一节点。

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<cmath>
#include<vector>
#include<queue>

using namespace std;
typedef long long LL;

const int INF=0x3f3f3f3f;
const int MAXN=2010;

int N,M;

struct Edge{
    int from,to,cap,flow;
};

struct Dinic{
    int n,m,s,t;            //结点数,边数(包括反向弧),源点编号和汇点编号
    vector<Edge> edges;     //边表。edge[e]和edge[e^1]互为反向弧
    vector<int> G[MAXN];    //邻接表,G[i][j]表示节点i和第j条边在e数组中的序号
    bool vis[MAXN];         //BFS使用
    int d[MAXN];            //从起点到i的距离
    int cur[MAXN];          //当前弧下标

    void clear_all(int n){
        for(int i=0;i<n;i++) G[i].clear();
        edges.clear();
    }
    void clear_flow(){
        int len=edges.size();
        for(int i=0;i<len;i++) edges[i].flow=0;
    }
    void add_edge(int from,int to,int cap){
        edges.push_back((Edge){from,to,cap,0});
        edges.push_back((Edge){to,from,0,0});
        m=edges.size();
        G[from].push_back(m-2);
        G[to].push_back(m-1);
    }
    bool BFS(){
        memset(vis,0,sizeof(vis));
        queue<int> q;
        q.push(s);
        d[s]=0;
        vis[s]=1;
        while(!q.empty()){
            int x=q.front();
            q.pop();
            int len=G[x].size();
            for(int i=0;i<len;i++){
                Edge& e=edges[G[x][i]];
                if(!vis[e.to]&&e.cap>e.flow){
                    vis[e.to]=1;
                    d[e.to]=d[x]+1;
                    q.push(e.to);
                }
            }
        }
        return vis[t];
    }
    int DFS(int x,int a){
        if(x==t||a==0) return a;
        int flow=0,f,len=G[x].size();
        for(int& i=cur[x];i<len;i++){
            Edge& e=edges[G[x][i]];
            if(d[x]+1==d[e.to]&&(f=DFS(e.to,min(a,e.cap-e.flow)))>0){
                e.flow+=f;
                edges[G[x][i]^1].flow-=f;
                flow+=f;
                a-=f;
                if(a==0) break;
            }
        }
        return flow;
    }
    int maxflow(int s,int t){
        this->s=s;
        this->t=t;
        int flow=0;
        while(BFS()){
            memset(cur,0,sizeof(cur));
            flow+=DFS(s,INF);
        }
        return flow;
    }
    int mincut(){   //call this after maxflow
        int ans=0;
        int len=edges.size();
        for(int i=0;i<len;i++){
            Edge& e=edges[i];
            if(vis[e.from]&&!vis[e.to]&&e.cap>0) ans++;
        }
        return ans;
    }
    void reduce(){
        int len=edges.size();
        for(int i=0;i<len;i++) edges[i].cap-=edges[i].flow;
    }
}solver;

int d[MAXN];
vector<int> p[MAXN];

struct HeapNode{
    int u,d;
    bool operator < (const HeapNode& rhs) const{
        return d>rhs.d;
    }
};
struct Edge2{
    int u,v,dist;
};

struct Dijkstra{
    int n,m;
    vector<Edge2> edges;
    vector<int> G[MAXN];
    bool done[MAXN];

    void init(int n){
        this->n=n;
        for(int i=0;i<n;i++) G[i].clear();
        edges.clear();
    }
    void add_edge(int u,int v,int dist){
        edges.push_back((Edge2){u,v,dist});
        m=edges.size();
        G[u].push_back(m-1);
    }
    void dijkstra(int s){
        priority_queue<HeapNode> q;
        for(int i=0;i<n;i++) p[i].clear();
        for(int i=0;i<n;i++) d[i]=INF;
        d[s]=0;
        memset(done,0,sizeof(done));
        q.push((HeapNode){s,0});
        while(!q.empty()){
            HeapNode x=q.top();
            q.pop();
            int u=x.u;
            if(done[u]) continue;
            done[u]=true;
            int L=G[u].size();
            for(int i=0;i<L;i++){
                Edge2& e=edges[G[u][i]];
                if(d[e.v]>d[u]+e.dist){
                    d[e.v]=d[u]+e.dist;
                    p[e.v].clear();
                    p[e.v].push_back(u);
                    q.push((HeapNode){e.v,d[e.v]});
                }
                else if(d[e.v]==d[u]+e.dist){
                    p[e.v].push_back(u);
                    q.push((HeapNode){e.v,d[e.v]});
                }
            }
        }
    }
}solver2;

int num[MAXN];

int dfs(int u){
    if(u==0) return 0;
    if(num[u]!=INF) return num[u];
    int len=p[u].size();
    for(int i=0;i<len;i++){
        int fa=p[u][i];
        solver.add_edge(fa,u,1);
        solver.add_edge(u,fa,1);
        num[u]=min(num[u],dfs(fa)+1);
    }
    return num[u];
}

int main(){
    freopen("in.txt","r",stdin);
    while(scanf("%d%d",&N,&M)!=EOF){
        solver2.init(N+1);
        int u,v,t;
        for(int i=0;i<M;i++){
            scanf("%d%d%d",&u,&v,&t);
            u--;
            v--;
            solver2.add_edge(u,v,t);
            solver2.add_edge(v,u,t);
        }
        solver2.dijkstra(0);
        memset(num,INF,sizeof(num));
        solver.clear_all(N+1);
        int n=dfs(N-1);
        solver.maxflow(0,N-1);
        int ans1=solver.mincut(),ans2=M-num[N-1];
        printf("%d %d\n",ans1,ans2);
    }
    return 0;
}



一个服务如何被找到、被调用、被看见:注册中心、发布注册、发现调用与服务监控的治理闭环 服务数量一多,“对方在哪儿”就成了时刻变化的变量。本文沿发布、注册、发现、调用、监控的治理闭环展开:注册中心的数据模型、健康检查与AP/CP取舍,自我保护、推空保护与本地快照三道自保机制;服务发布的启动器、动态代理、发布管理器、协议服务器与登记顺序;消费端的服务目录、请求ID配对、六种集群容错与三种发现模式;日志、指标、链路三支柱与熔断舱壁。配套五个Java演示程序实测:默认参数下宕机实例平均240秒才被摘除,优雅下线可降至45秒,统计窗口长于租约会让自我保护失效,尾部采样可捕获全部慢请求。 阅读详情

相关推荐

从零开始搭建属于自己的语音识别API服务器(ASRT开源项目)

材料准备 云服务器 (本人使用的的是阿里云服务器 Ubuntu(Linux操作系统)) 环境搭建 1. Python 3.7 话不多说直接上代码 sudo su yum -y install git yum -y install gcc yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-deve

zhi_qian的博客 5647

HDU5294(最短路,最大流)

题意是给一个n点m边的无向图,求最少去掉多少边使得最短路不存在,和最短路存在的情况下最多去掉多少边。 把所有最短路上的边搞进来,流量为1跑最大流,去掉多少边只要搞个DP就能找到最短路图上得最短的路,用m去减就行。 因为n 坑点是有重边。 #include #include #include #include #include #include #include using n

morejarphone~ 616

power bi 演唱会-佐罗

我是业务分析人员,注重使用性,因此,课程不到 30% 的内容就可以解决目前为止我碰到的所有业务问题,剩下的 70% 内容是帮助我提升,优化,升华,精益求精用的,比如第三方工具,比如代码运行速度优化,比如查询逻辑优化等等。系统性上来说,结构明晰,安排上非常有条理,层层递进;《BI 真经》,中有真经二字,略显夸大,而当我第一次证明了这点的时候,我也非常惊讶,这就是我做以下所有事情的一切动力。《BI 真经》综合考量思想性,系统性,本质性,创新性,通用性,技巧性,启发性,对比其他课程有压倒性的显著优势。

v_1090213742的博客 911

hdu5294(最短路+网络流)

链接:点击打开链接 题意:n个点,m条边,有权无向图,求出删去最少条边数可以使得图没有最短路径,以及最短路上的边最多条最多删除多少使得1还能走到n 代码:#include #include #include #include #include #include #include const int INF=0x3f3f3f3f; using namespace std; stru

stay_accept的专栏 895

LCD驱动芯片——BL55072A驱动程序

初始化子程序: START 0x7C; I2C子地址 0xEA;ICSET,软件复位芯片 0xC0;MODSET,关显示 0xF0;BLKCTL,关闪烁 0xA3;DISCTL,80Hz Line inversion,High Power mode 0xE8;ICSET,清复位bit1 STOP 显示刷新子程序: START 0x7C;I2C子地址 0xF0;BLKCTL,关闪烁 0xA3;DISCTL,80Hz Line inversion,High Power mode 0xE8或0xEC;ICSE

love421的博客 3175

Matlab实现POD本征正交分解数据降维模型

近年来,随着大数据时代的到来,各种复杂的工程问题产生了海量的高维数据,如何有效降维、提取数据中的关键信息成为了众多领域中的重要问题。在传统的数据降维方法中,PCTFA(主成分分析)是一种典型的统计方法,然而对于流体动力学等非线性问题,PCTFA在处理时可能失去部分物理意义,难以捕捉到系统的复杂性。在降维过程中,POD提取的主要特征通常是一组复杂的正交基函数,如何将这些结果有效地转化为直观且易于理解的物理意义,特别是在实际应用中,对该特征的理解和分析,依然是一个重要的课题。本项目的扩展性也得到了有效体现。

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 1216

数据结构期末题

最小边数最短路。最短路可能有多条,边数最少的最短路径称为最小边数最短路。在非负权图上求顶点v到顶点w的最小边数最短路。 在这里插入代码片 一颗二叉树以链接的形式存储,求二叉树中从根结点到叶结点的一条路径长度等于树的高度的路径,若这样的路径存在多条,则输出路径终点(叶结点)在最左的一条。 typedef struct node { int data; struct node *left,*right; }*Tree; int maxlen=0; Tree maxpath[maxsize]; int le

weixin_43911559的博客 1108

企业AI数据资产评估的自动化工具:AI应用架构师的使用指南

在AI驱动的企业数字化转型中,数据资产是支撑模型训练、业务决策的核心燃料。然而,80%的AI项目失败源于数据问题——低质量数据导致模型偏差、未评估的风险引发合规危机、价值不明确的数据浪费资源。手动数据资产评估效率低、易出错,无法满足规模化AI应用需求。本文将以AI应用架构师的视角,拆解企业数据资产评估的核心逻辑,用"餐厅选食材"的生活化比喻解释复杂概念,结合自动化工具的技术原理与实战案例,教你如何从0到1搭建数据资产评估体系。无论是数据质量检测、价值量化还是风险防控,你都能找到可落地的工具方案与实践步骤。

2502_91592937的博客 1629

hdu5294(最短路+最大流)

Tricks Device Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 3095    Accepted Submission(s): 835 Problem Description Innocent Wu f

martinue 917

YOLOv5改进系列(4)——添加ECA注意力机制

手把手教你在YOLOv5中加入ECA注意力机制,文内含两种方法,小白也能看懂!

路人贾的博客 8546

YOLOv10改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型

本文记录的是基于MobileNet V3的YOLOv10目标检测轻量化改进方法研究。的模型结构是通过得来的,其中的基础模块结合了的深度可分离卷积、的线性瓶颈和倒置残差结构以及MnasNet中基于挤压和激励的轻量级注意力模块,使模型在性能、效率和灵活性方面都具有显著的优势。本文在替换骨干网络中配置了原论文中的small和large2种模型,以满足不同的需求。

Limiiiing的博客 513

HDU5294——Tricks Device(最短路 + 最大流)

第一次做最大流的题目… 这题就是堆模板#include <iostream> #include <algorithm> #include <cmath> #include <cstring> #include <cstdio> #include <cstdlib> #include <vector> #include <queue> using namespace std;typedef long

Reverie 1145

YOLO11-pose关键点检测:训练实战篇 | 自己数据集从labelme标注到生成yolo格式的关键点数据以及训练教程

教会你如何用自己的数据集转换成对应格式的数据集以及如何训练YOLO11-pose关键点检测

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 5417

hdu5294 Tricks Device 多校联合赛

#include #include #include #include #include #include #include using namespace std; typedef pair P; const int INF =10000000; int n,m,d[2100],mp[2100][2100],num,nmp[2100][2100]; struct edge { in

zhousilijames的专栏 360

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

2015多校联合训练第一场Tricks Device(hdu5294)

题意:给一个无向图,给起点s,终点t,求最少拆掉几条边使得s到不了t,最多拆几条边使得s能到t 思路: 先跑一边最短路,记录最短路中最短的边数,总边数-最短边数就是第二个答案 第一个答案就是在最短路里面求最小割,也就是求最大流,然后根据最短路在建个新图,权为1,跑一边网络流模板题,以后就用这套模板了#include <iostream> #include <cstdio> #include <

逍遥小章 924

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

hdu5294

Tricks Device Problem Description Innocent Wu follows Dumb Zhang into a ancient tomb. Innocent Wu’s at the entrance of the tomb while Dumb Zhang’s at the end of it. The tomb is made up of many

One_my_own_way的专栏 641

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

HDU 5294--Tricks Device【最小割 && 最短路处理,新建图】

Tricks Device Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 2208    Accepted Submission(s): 584 Problem Description Innocent Wu follo

_阿阿阿阿欢 824

hdu5294(最大流+最短路)Tricks Device

这道题刚开始想了很久,而且之前一直不明白dicnic既然已经求了阻塞流,为什么还需要反向弧呢,现在如图: 2和3是一层,4和5是一层,然后你要是走1->2->4->6的话,如果没有反向弧,你会发现最大流是2,没有增广路了,而当有了反向弧之后,你还可以走1->3->4->2->5->6,以前总听别人说有反向弧,然而一直没找到合适的例子,今天终于让我找到了,非常开心 下面说一下今天这道题,这个题

银之夏雪的博客 790

无向图的一节点到另一节点的最短路径(边数最少的路径)(采用邻接表存储)...

// 无向图的一节点到另一节点的最短路径(边数最少的路径)(采用邻接表存储).cpp : Defines the entry point for the console application. // #include "stdafx.h" #include&lt;iostream&gt; #define MAX 100 #define MAXQ 50 using namespace ...

pleasetojava 955

2017第二次多校联合hdu6053Tirck Gcd

假装这里有链接题意:给出A的序列,然后根据A的序列去确定B的序列。 B的序列满足1≤Bi≤Ai1 \le B_i \le A_i且对于任意B的子集的gcd≥ \ge2.解:首先考虑任意B的子集的gcd≥ \ge2这个条件。它代表的含义即B中任意两个数不互质。那个B中的数都是倍数关系。然后再来看A,已知了A序列,那我们可以枚举小于A但是大于1的所有数。拿样例来看,A的序列为4 4 4 4,然后从

开心铁匠铺 476

cf938d(建图技巧+最短路新模板)

这个题还是蛮好的。。充分反应了窝智商不够题又做得不多的事实。。。 这个需要建图(网络流既视感。。),先把原图的边权值*2,建一个超级源点,连到各个点 ,权值为ai,然后跑最短路即可,每条从源点出发的路径可以看做一种反过来的方案。。。 汪聚聚说看到多源最短路就要想到建图。。orz果然窝是经验不足。。之前以为建图是网络流特色。。其实图论应该都有这类操作,以后得好好学学。。。 另外。。在c

qkoqhh 880

HDU 5294 - Tricks Device(最短路+最小割)

题目: http://acm.hdu.edu.cn/showproblem.php?pid=5294 题意: n个点,m条边,构建有权无向图。 求出删去最少条边数可以使得图没有最短路径,以及删出最多条边使得图仍有最多条路径。 思路: 最短路处理出最短路径图,做法是使用dis数组,若若dis[v]-dis[u] = w(u,v),则该路在最短路径中。 建出最短路径之后 跑一次网络流

Halo 1760

hdu5294Tricks Device 最大流之最小割

//给一个无向图, //一个人从起点到走到终点只走最短路 //问最少需要删除多少边使得其不能从起点走到终点 //问最多删除多少点使得其能走到终点 //先求出所有在最短路上的边,对这些边重建图 //将其权值改为1,那么其最大流就是其最小割 //刚开始没有考虑为无向图,坑了半天 #include #include #include #include using namespace std ; cons

ijbuhv的专栏 964

边数限制最短路

从0到t,经过边数不超过10的最短路. sp[i][k]代表从0到i经过k条边的最短路长度。 #include #include #include #include #include using namespace std; #define INF 1<<20 #define MAXN 1010 #define MAXH 10 long d[MAXN][MAXN]; long sp[MAX

shenyuedong123的博客 745

HDU 5294 Tricks Device(多校2015 最大流+最短路)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5294 Problem Description Innocent Wu follows Dumb Zhang into a ancient tomb. Innocent Wu’s at the entrance of the tomb while Dumb Zhang’s at the ...

1294

hdu5294||2015多校联合第一场1007 最短路+最大流

http://acm.hdu.edu.cn/showproblem.php?pid=5294 Problem Description Innocent Wu follows Dumb Zhang into a ancient tomb. Innocent Wu’s at the entrance of the tomb while Dumb Zhang’s at the e

ACM,再见! 1358
上一篇: hdu5288 OO’s Sequence 二分 多校联合第一场
下一篇: uva12373 - Pair of Touching Circles
小小小小葱
博客等级 码龄14年 22粉丝 266原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值