列表

详情


NC15108. 道路建设

描述

随着如今社会的不断变化,交通问题也变得越来越重要,所以市长决定建设一些公路来方便各个城市之间的贸易和交易。虽然市长的想法很好,但是他也遇到了一般人也经常头疼的问题,那就是手头的经费有限……在规划过程中,设计师们已经预算出部分城市之间建设公路的经费需求。现在市长想知道,它能不能将他的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

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Python3 解法, 执行用时: 46ms, 内存消耗: 5144K, 提交时间: 2022-09-21 23:53:21

fn=[]
c,n,m=map(int,input().split())
f=[i for i in range(n+1)]
for i in range(n):
    a,b,x=map(int,input().split())
    fn.append([a,b,x])
fn.sort(key=lambda x:x[2],reverse=False)
def find(x):
    if x==f[x]:
        return x
    return find(f[x])
cnt=0
ans=0
for i in range(n):
    fa=find(fn[i][0])
    fb=find(fn[i][1])
    if fa!=fb:
        ans+=fn[i][2]
        cnt+=1
    if cnt==m-1:
        break
if ans<=c:
    print("Yes")
else:
    print("No")

C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 420K, 提交时间: 2023-07-25 10:33:34

#include<algorithm>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
const ll N=1e18;
ll l,r,pos;
void hahaha(){
    int c;
    cin>>c;
    if(c>=25&&c<=50){
        cout<<"No";
        return ;
    }
    else
        cout<<"Yes";
}
int main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int t=1;
    while(t--){
        hahaha();
    }
}

pypy3 解法, 执行用时: 149ms, 内存消耗: 27120K, 提交时间: 2022-01-18 09:10:46

lst=list(map(int,input().split()))
money=lst[0]
n=lst[1]
ans=[]
bst=[]
m=0
for i in range(n):
    ist=list(map(int,input().split()))
    ans.append(ist)
ans.sort(key=lambda x:x[2],reverse=False)
for i in ans:
    if  i[1] not in bst:
       
        bst.append(i[1])
        m+=i[2]
if m<=money:
    print('Yes')
else:
    print('No')

上一题