牛客网多校训练 道路问题

题目描述

随着如今社会的不断变化,交通问题也变得越来越重要,所以市长决定建设一些公路来方便各个城市之间的贸易和交易。虽然市长的想法很好,但是他也遇到了一般人也经常头疼的问题,那就是手头的经费有限……在规划过程中,设计师们已经预算出部分城市之间建设公路的经费需求。现在市长想知道,它能不能将他的m个城市在有限的经费内实现公路交通。如果可以的话,输出Yes,否则输出No(两个城市不一定要直接的公路相连,间接公路到达也可以。)

输入描述:

测试输入包含多条测试数据每个测试数据的第1行分别给出可用的经费c(<1000000),道路数目n(n<10000),以及城市数目m(<100)。接下来的n行给出建立公路的成本信息,每行给出三个整数,分别是相连的两个城市v1、v2(0<v1,v2<=m)以及建设公路所需的成本h(h<100)。

输出描述:

对每个测试用例,输出Yes或No。

示例1

输入

20 10 5
1 2 6
1 3 3
1 4 4
1 5 5
2 3 7
2 4 7
2 5 8
3 4 6
3 5 9
4 5 2

输出

Yes

示例2

输入

10 2 2
1 2 5
1 2 15

输出

Yes

备注:

两个城市之间可能存在多条线路

这是我看到的一个题解
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <algorithm>
using namespace std;
int c,m,n,p,q,cost;
int theold[101];//theold[i]的值为i的老大
struct roads
{
    int a,b,cost;
}road[10001];
int cmp(roads x,roads y)//用于使所有道路按照费用从小到大排列
{
    return x.cost<y.cost;
}
void let(int x,int y)//使y的团伙 都认x的老大为老大
{
    for(int i=1;i<=n;i++)
        if(theold[i]==theold[y])
        theold[i]=theold[x];
    return;
}
int main()
{

    cin>>c>>m>>n;
    for(int i=1;i<=n;i++)//各自封王。。。
        theold[i]=i;
    for(int i=0;i<m;i++)
    {
        cin>>p>>q>>cost;
        road[i].a=p,road[i].b=q,road[i].cost=cost;
    }
    sort(road,road+m,cmp);
    for(int i=0;i<m;i++)
    {
        p=road[i].a;q=road[i].b;
        if(theold[p]==theold[q])//如果老大相同,即他们已经相通了,就没必要修路了
            continue;
        c-=road[i].cost;
        let(p,q);
    }
    if(c>=0)cout<<"Yes\n";
    else cout<<"No\n";
    return 0;
}

原文地址:https://www.cnblogs.com/carcar/p/8445584.html

时间: 2024-10-10 14:52:57

牛客网多校训练 道路问题的相关文章

牛客网多校训练 训练技巧

题目描述  来源 常州大学组织了新生寒假训练一共N天,每天训练可以获得的训练效果是Ei.但是如果连续训练超过K天,萌新们会受不了而被劝退. 现在负责人想知道,如何安排能保证萌新不会被劝退并且能获得最大的训练效果. 输入描述: 第一行:两个用空格隔开的整数:N和K,1≤N≤100000,1≤K≤N第二行到N+1行:第i+1行有一个整数,表示第N天的训练效果是Ei,(0 <= Ei <= 1,000,000,000) 输出描述: 第一行:单个整数,表示最大的能力之和 示例1 输入 5 2 1 2

牛客网多校训练 酸碱滴定

题目描述    题目来源 有时候你会抱怨,什么时候才能到终点. 有时候你会迫不及待,怎么颜色还不改变. 滴定管长场的,我们的路长长的. 用心的放入每一滴,终点就在你手心. 今天小星需要去完成一个酸碱滴定实验.,实验室老师要求用 A mol/L 的HCL去测定一瓶NaOH的浓度.首先小星取出了一个锥形瓶,在里面放入的Bml的NaOH,并滴加1-2滴甲基橙,然后用HCL去滴定他 当滴定至恰好变为红色时(可以认为H离子浓度等于OH离子浓度),用了C ml 小星现在需要计算NaOH的浓度是多少?单位(m

牛客网多校训练 德玛西亚万岁

题目描述   来源 德玛西亚是一个实力雄厚.奉公守法的国家,有着功勋卓著的光荣军史. 这里非常重视正义.荣耀.职责的意识形态,这里的人民为此感到强烈自豪. 有一天他们想去制裁邪恶的比尔吉沃特,于是派遣了自己最优秀的战士. 结果比尔吉沃特领土太小,只有长为n宽为m共计n*m块土地,其中有些土 地标记为0表示为高山峻岭或者深海湖泊,英雄们无法在其中站立,只有标 记为1的土地才能容纳一个英雄.德玛西亚的英雄们战斗时有一个特点,他 们不希望队友站在自己旁边显得很暧昧.请问最多能有多少种安排德玛西 亚英雄

牛客网NowCoder 2018年全国多校算法寒假训练营练习比赛(第四场)A.石油采集(dfs) B.道路建设(最小生成树prim) C.求交集(暴力) F.Call to your teacher(迪杰斯特拉乱用) H.老子的全排列呢(dfs)

菜哭了... A.石油采集 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 链接:https://www.nowcoder.com/acm/contest/76/A来源:牛客网 题目描述 随着海上运输石油泄漏的问题,一个新的有利可图的行业正在诞生,那就是撇油行业.如今,在墨西哥湾漂浮的大量石油,吸引了许多商人的目光.这些商人们有一种特殊的飞机,可以一瓢略过整个海面20米乘10米这么大的长方形.(上下相

牛客网华为机试训练第3题 明明的随机数

今天花了一下午才把明明的随机数这个搞明白,期间和牛客网的编译器殊死搏斗.一直发现在本地编译器运行成功,但是在牛客上的老师不能通过.整的十分的恼火和焦躁.后来看到了相同的问题,才发现解决之道. 时间限制:1秒 空间限制:32768K 热度指数:222608 本题知识点: 数组 算法知识视频讲解 题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不

牛客网在线判题系统JavaScript(V8)使用

JavaScript作为一种弱类型的编程语言,语法和C/C++.JAVA等存在差别,但是对于大部算法题,不只是C/C++.JAVA,也依然可以使用JavaScript来实现.所以在牛客网中,如果你喜欢JavaScript这门编程语言,同时对数据结构与算法感兴趣,当然可以使用这门语言去刷编程题. 大家有没有跟我碰到过和我类似的情况,在牛客网刷编程题的时候,编译器提供的是Javascript(v8 6.0.0),在线编程部分前端编程还好,只用在题目给出的函数中补充就行.但苦恼的是,我们不知道如何像C

牛客网-求和

题目描述 输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来 输入描述: 每个测试输入包含2个整数,n和m 输出描述: 按每个组合的字典序排列输出,每行输出一种组合 示例1 输入 5 5 输出 1 4 2 3 5 #include<iostream> #include<string> #include<vector> #include<algorithm> using namespac

网易2017秋招编程题集合-牛客网

网易2017秋招编程题集合-牛客网 链接:https://www.nowcoder.com/questionTerminal/0147cbd790724bc9ae0b779aaf7c5b50来源:牛客网 如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列.例如: {1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列, {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列. 现在给出一个数字序列,允许使用一

【华为机试】找最高分(通过此题熟悉牛客网Node输入输出)

来源:牛客网 老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问.当然,老师有时候需要更新某位同学的成绩. 输入描述: 输入包括多组测试数据.每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目.学生ID编号从1编到N.第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩接下来又M行,每一行有一个字符C(只取'Q'或'U'),和两个正整数A,B,当C为'Q'的时候