hdu 4738 边双连通&桥,有重边情况

树莓派4B:控制步进电机 文章目录准备阶段接线阶段树莓派程序 准备阶段 准备以下物品,淘宝都可以买到: 57步进电机 电源开关(220v转24v,3A,72W) 步进电机驱动器 电源线 电线 杜邦线 树莓派4B一套 具体型号如下: 接线阶段 整体:接线效果如下图 电源开关起220v转24v作用,很好接线,输出24v接入步进电机驱动器 步进电机驱动器的 A+ A- B+ B- 按提示接步进电机四线,步进电机上就会有说... 阅读详情

Caocao's Bridges

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1955    Accepted Submission(s): 699


Problem Description
Caocao was defeated by Zhuge Liang and Zhou Yu in the battle of Chibi. But he wouldn't give up. Caocao's army still was not good at water battles, so he came up with another idea. He built many islands in the Changjiang river, and based on those islands, Caocao's army could easily attack Zhou Yu's troop. Caocao also built bridges connecting islands. If all islands were connected by bridges, Caocao's army could be deployed very conveniently among those islands. Zhou Yu couldn't stand with that, so he wanted to destroy some Caocao's bridges so one or more islands would be seperated from other islands. But Zhou Yu had only one bomb which was left by Zhuge Liang, so he could only destroy one bridge. Zhou Yu must send someone carrying the bomb to destroy the bridge. There might be guards on bridges. The soldier number of the bombing team couldn't be less than the guard number of a bridge, or the mission would fail. Please figure out as least how many soldiers Zhou Yu have to sent to complete the island seperating mission.
 

Input
There are no more than 12 test cases.

In each test case:

The first line contains two integers, N and M, meaning that there are N islands and M bridges. All the islands are numbered from 1 to N. ( 2 <= N <= 1000, 0 < M <= N 2 )

Next M lines describes M bridges. Each line contains three integers U,V and W, meaning that there is a bridge connecting island U and island V, and there are W guards on that bridge. ( U ≠ V and 0 <= W <= 10,000 )

The input ends with N = 0 and M = 0.
 

Output
For each test case, print the minimum soldier number Zhou Yu had to send to complete the mission. If Zhou Yu couldn't succeed any way, print -1 instead.
 

Sample Input
  
3 3 1 2 7 2 3 4 3 1 4 3 2 1 2 7 2 3 4 0 0
 

Sample Output
  
-1 4
 

Source
 

Recommend
liuyiding
 
坑点较多,写在注释里了
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;

#define maxn 1005
const int inf =0x3f3f3f3f;
struct edge
{
    int v, w,rev, flag;  //flag用于判断该边是否被访问过,rev代表反向边
    edge(){};
    edge(int vv, int ww, int rr){ v=vv; w=ww;rev=rr; flag=false;}
};
vector<edge> g[maxn];
int low[maxn],dfn[maxn], in[maxn];
int belong[maxn];
stack<int> s;
int n,m, dcc;

void init()
{
    for(int i=0; i<maxn; i++)g[i].clear();
    memset(dfn, 0, sizeof(dfn));
    memset(in, 0, sizeof(in));
    while(!s.empty()) s.pop();
    dcc=0;
}
void add(int u, int v, int w)
{
    g[u].push_back(edge(v, w, g[v].size()));
    g[v].push_back(edge(u, w, g[u].size()-1));
}


void tarjan(int u, int &cnt, int &res)
{
    dfn[u]=low[u]=++cnt;
    s.push(u); in[u]=1;
    int v;
    for(int i=0; i<g[u].size(); i++){  //并不能通过检查v是否为u的父节点而跳过当前循环
        v=g[u][i].v;                   //因为u,v间可能存在多条边,所以需要判断的是是否由同一条边访问回父节点,即同一条边不能来回两次遍历
        if(!dfn[v]){
            g[u][i].flag=true; g[v][g[u][i].rev].flag=true; //标记边访问过,防止同一条边的反向边再次访问
            tarjan(v, cnt, res);
            low[u]=min(low[v], low[u]);
            if(low[v]>dfn[u]){
                res=min(res, g[u][i].w);
            }
        }
        else if(in[v] && !g[u][i].flag) {
            low[u]=min(dfn[v], low[u]);
             g[u][i].flag=true; g[v][g[u][i].rev].flag=true;
        }
    }

    if(low[u]==dfn[u]){
        dcc++;
        do{
            v=s.top(); s.pop();
            belong[v]=dcc;
            in[v]=false;
        }while(v!=u);
    }

}



int main()
{
    while(scanf("%d%d", &n, &m)==2 && n+m!=0){
        init();

        int u,v,w;
        for(int i=0; i<m; i++){
            scanf("%d%d%d", &u, &v, &w);
            add(u,v,w);
        }

        int tot=0, ans=inf;
        tarjan(1, tot, ans);
        if(ans==0) ans=1;  //最小值为0也至少要派1个人去
        for(int i=2; i<=n; i++) //原图不连通,ans=0
            if(!dfn[i]){
                ans=0;
                break;
            }


        if(inf==ans) ans=-1;
        printf("%d\n", ans);
    }
    return 0;
}

。





【立创EDA-PCB设计基础】6.布线铺铜实战及细节详解 本文进行布线铺铜实战及详解布线铺铜的细节 阅读详情

相关推荐

【已解决】App unavailable Unfortunately, Claude is only available in certain countries and regions

App unavailable Unfortunately, Claude is only available in certain countries and regions right now. We will soon publish a list of supported locations on our website.

weixin_43941438的博客 3万+

Hdu 4738 Caocao's Bridges (有重边无向图求桥)

2013杭州网络赛的第一题,坑点相当多,貌似这题导致15分钟没有队伍过题…… 比赛时我负责这道题,WA9次才A。。。。。 从边数小于等于点数平方这点来看肯定有重边,需要处理。 图不连通,输出0. 如果取到的最小值是0的话,要输出1,表示要派一个人过去。 #include #include #include using namespace std; #define min(a,b

whyorwhnt的专栏 1484

营销反作弊之 异常行为分析模型(一),附带python代码

通过对用户行为进行深入的分析,识别出与常规模式不符的异常行为,可以有效检测并阻止虚假广告点击、刷单、点击欺诈等欺诈行为。本文将详细探讨营销反欺诈中异常行为分析的方法,介绍如何通过数据采集、清洗、行为建模与异常检测,准确识别潜在的欺诈行为,并提供 Python 实现代码示例。**监督学习 (Supervised Learning):**在标注数据的帮助下,训练机器学习模型使其能预测未知数据的结果。营销反欺诈异常行为分析的整体流程涉及多个环节,确保通过对用户行为的深入分析,及时识别潜在的欺诈行为。

viviwiky的博客 1230

hdu 4738 Caocao's Bridges (割边/桥)

题目链接:hdu 4738 题目大意:

ンZee的解题报告 1382

107.在 Vue 3 中使用 OpenLayers 实现视图联动功能

是一个非常强大的 Web 地图渲染库,支持多种地图数据格式和交互操作。在 Vue 3 中,我们可以利用。绑定到真实的 DOM 元素上,我们就可以用它们来初始化 OpenLayers 地图。来封装和管理 OpenLayers 地图的状态,从而更高效地开发地图应用。,即两个地图窗口共享同一个视图(View),从而实现同步缩放、拖动等操作。这可以确保 Vue 组件销毁时,OpenLayers 也正确销毁地图实例。,并且它们会同步缩放和拖动,达到地图联动的效果。这样,无论你拖动哪个地图,另一个都会同步变化。

小彭的博客 1938

汽车零部件产线实战:C#上位机+YOLO实现螺栓装配到位视觉检测

本项目基于C#上位机+YOLOv8实现汽车零部件产线螺栓装配到位视觉检测,全程贴合产线实际场景,从硬件选型、安装调试,到模型训练、上位机开发,再到项目联调、优化扩展,均提供手把手实操指导,代码可直接复制使用,规避了工业视觉产线检测的高频踩坑点。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1330

hdu4738——tarjan割边

hdu4738 题意 n个岛m座桥的无向图,每座桥上有若干个士兵,派出最少的士兵只炸毁一座桥,使得n个岛不连通(派出的士兵不能少于驻守的士兵,特别的改桥的驻守人数为0的时候要派一个士兵)。 思路 用tarjan算法,满足dfn[u] &lt; low[v]的(u,v)就是割边,直接处理出来取最小值,这里还有一个问题就是有重边,所以要判断一下。 #include &lt;bits/stdc++.h&...

D_Bamboo_的博客 353

基于Python实现身份证信息识别

身份证是一种重要的证件,包含了个人的基本信息,如姓名、性别、出生日期、住址等。在实际应用中,有时需要对身份证进行自动化的识别,以提高工作效率和准确性。本文将介绍如何使用Python实现身份证信息的识别,通过图像预处理、OCR技术和解析算法,实现对身份证号码和其他信息的提取和解析。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

算法学习——求割点与桥的tarjan算法 HDU4738

前天打周赛做到 HDU4738  绞尽脑汁都没想到用什么好的方法来解决这个问题   周赛结束之后跟Yasola和xcy讨论了一下居然用到  tarjan算法   exm???  tarjan不是用来求 lca的么??? 回去怒补了一发才知道   tarjan原来是一系列是算法   根据我看到的博客原文  可以这么说   tarjan是个天才  他伟大的一生创造了无数的算法  统称 tarjan算

Key的博客 2494

2024阅读AOSP源码的正确打开姿势

在Android系统开发中,阅读AOSP(Android Open Source Project)源码是非常重要的环节。然而,如何构建一个优雅的阅读环境却是一个不容忽视的问题。本文将介绍不同工具和方法下阅读AOSP源码的正确姿势,并对比其优缺点。

虎哥LoveDroid 2706

Android 14安装的APK默认允许运行时权限

本文介绍了在Android系统中实现安装应用后自动授予运行时权限的方法。通过在安装完成广播中检测应用安装状态,调用新增的DefaultPermissionGrantPolicy.grantAppRuntimePermissions()函数来授予常规权限,并使用allowSpecialPermission()处理特殊权限(如安装未知应用和悬浮窗权限)。文章详细说明了如何修改DefaultPermissionGrantPolicy类,添加grantAppRuntimePermissions和grantRunti

热衷于Android Framework和系统APP的修改经验分享 683

I - Caocao's Bridges HDU - 4738(求边双连通)

I - Caocao’s Bridges HDU - 4738(求边双连通) 题目:传送门 思路见注释 代码 : /* if 图不连通:ans=0 eles if 无桥:ans=-1 else ans=权值最小的桥==0?1:ans */ #include&lt;bits/stdc++.h&gt; #define mset(a,b) memset(a,b,sizeof(a)) using name...

Dch19990825的博客 455

使用再生龙备份还原liunx系统(精确每一步)

再生龙镜像可自行到官网下载(ISO/ZIP格式均可),然后使用tuxboot烧录工具制作启动盘,另外准备一个U盘用来存储备份的镜像文件,即再生龙盘和存储盘是两个分开的。当然也可以用分区工具把同一个硬盘分区来使用,比较方便,先学会基本的吧,只是告诉有个捷径,省个U盘。

米可的博客! 8366

HDU - 4738 Caocao's Bridges(targan 求桥(割边) +判重边)

HDU - 4738 Caocao’s Bridges(targan 求桥 +判重边) Caocao was defeated by Zhuge Liang and Zhou Yu in the battle of Chibi. But he wouldn’t give up. Caocao’s army still was not good at water battles, so he cam...

weixin_43179892的博客 312

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

HDU 4738 割边模板

HDU 4738 裸求割边的存在一起割边中的最小值 割边不存在输出-1 图不是连通图,则已经达到题目条件.士兵花费为0 坑点: 割边存在最小值为0,需要一个士兵抗炸弹 割边模板 #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;cstring&gt; using namespace std; const ...

_llc的博客 243

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

连通专题 求无向图的割边(有重边)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 题目大意: n个岛,m条桥梁(双向),每个桥梁有c个人。派人去炸一条桥梁(派去的人数必须&gt;=桥梁上是人数才能炸),让图不连通。问至少需要派多少个人。如果无法完成任务输出-1。 第一行包含两个整数N和M,意味着有N个岛和M个桥。所有岛都从1到N编号。(2 &lt;= N &lt;= 1000...

H_ang的博客 781

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

HDU4738 Caocao's Bridges(桥)

http://acm.hdu.edu.cn/showproblem.php?pid=4738 题意:给定一张无向图,求其中权值最小的一座桥,派最少的士兵去炸掉它!! 思路:直接用tarjan计算出桥并且取其中权值最小者。 此题坑点甚多,1、有可能桥本来就不联通,输出-1。2、桥最小者为0,输出1(至少排一个人去炸桥)。3、不要去重边,两个岛之间允许有多座桥,tarjan忽略返回边只忽略一次,

一点一滴,从不止步! 1692

hdu4738——桥(割边)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 Caocao was defeated by Zhuge Liang and Zhou Yu in the battle of Chibi. But he wouldn't give up. Caocao's army still was not good at water battles, ...

mumei的博客 316

无向连通图求割边(桥)hdu4738

点击打开链接 题目链接:   hdu 4738 题目大意:   曹操有N个岛,这些岛用M座桥连接起来                   每座桥有士兵把守(也可能没有)                   周瑜想让这N个岛不连通,但只能炸掉一座桥                   并且炸掉一座桥需要派出不小于守桥士兵数的人去 解题思路:   首

PSQ的专栏 1852

Hdu 4738 Caocao's Bridges (连通图+桥)

题目链接:   Hdu 4738 Caocao's Bridges 题目描述:   有n个岛屿,m个桥,问是否可以去掉一个花费最小的桥,使得岛屿边的不连通? 解题思路:   去掉一个边使得岛屿不连通,那么去掉的这个边一定是一个桥,所以我们只需要求出来所有的桥,然后比较每个桥的花费,选取最小的那个就好。 看起来很简单的样子哦!但是这个题目有很多的细节:   A:题目中有重边,以后写Ta...

weixin_30236595的博客 942

hdu4738 Caocao's Bridge Tarjan求割边

填坑……链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 噫这还是我开博客以来第一次切杭电的题 题意:只有一颗炸弹,要切断这个图,求出这条边权值的最小值。 很裸的$Tarjan$求割边…… 但是有几个细节问题: 1、原图可能根本不连通,要输出$0$…… 2、原图没有割边,输出$-1$…… 3、原图割边权值为$0$,但是考虑到...

anmaoguai3220的博客 227

HDU 4738 浅谈无向图边双连通求TarJAn求桥及如何“炸桥”

世界真的很大 这道题还算是比较裸的题了,但是坑点很多 但是主体代码不难写,好在有高人提前指出了坑点,才没有调多久 tarjan敲的越来越熟练了233看题先:description: 给一个无向图,求找出一条边,使得删除这条边以后整个图就不连通了,找出满足的边里权值最小的那个,找不到输出-1 input: There are no more than 12 test cases.

BerryKanry的博客 649

Caocao's Bridges(HDU 4738)-----重边无向图+桥

题目链接 题目描述 Caocao was defeated by Zhuge Liang and Zhou Yu in the battle of Chibi. But he wouldn’t give up. Caocao’s army still was not good at water battles, so he came up with another idea. He buil...

weixin_43960284的博客 326

HDU4738【杭州网赛、判桥】

刚拿到这道题时挺有思路,无奈平日里只敲过找割顶的代码,判桥的代码当时自己也没仔细敲。 当时一把泪啊,忽然感觉自己的图论才只是刚搞了个起步啊。。   题目有神坑。    就是先判是否连通,不连通直接输出0;                             还有一个比较坑的是有重边的情况,那这样就有重边的两点之间就不可能存在桥。                            ...

weixin_33862993的博客 254

hdu 4738 无向图求桥

1 /* 2 题意:给出n个岛屿,m座桥连接,每座桥由w个人守住,给出一个炸弹可以炸毁一座桥,而炸每座桥之前 3 要先将桥上的敌人消灭,最少需要w人,问最少需要多少人才能炸毁其中的一座桥 4 5 题解:无向图求桥 6 注意:有重边,当桥上人数为0时,最少应该需要1人(需要有一个人带着炸弹过去) 7 */ 8 #include &lt;c...

dianxie7120的博客 202

HDU 4738 Caocao‘s Bridges (桥+特判连通)

题意:给出一张无向图,求最小权的桥。 题解:桥 跑tarjan求桥。 特判要注意两个点: ①若本身不连通,输出0 ②若最小权为0,输出1 #define _CRT_SECURE_NO_WARNINGS #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;string&gt; #include&lt;cstring&gt; #include&lt;algorithm&gt; #include&lt;queue&gt; #include&lt;

gongyuandaye的博客 175
上一篇: zoj 3649 树上的倍增法
下一篇: poj 3352 双连通分量
HuanTongH
博客等级 码龄12年 7粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值