vijos--繁华的都市

描述

城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造。城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条道路相连接。这些道路是双向的,且把所有的交叉路口直接或间接的连接起来了。每条道路都有一个分值,分值越小表示这个道路越繁忙,越需要进行改造。但是市政府的资金有限,市长希望进行改造的道路越少越好,于是他提出下面的要求:
1.改造的那些道路能够把所有的交叉路口直接或间接的连通起来。

2.在满足要求1的情况下,改造的道路尽量少。

3.在满足要求1、2的情况下,改造的那些道路中分值最大的道路分值尽量小。

任务:作为市规划局的你,应当作出最佳的决策,选择那些道路应当被修建。

格式

输入格式

第一行有两个整数n,m表示城市有n个交叉路口,m条道路。接下来m行是对每条道路的描述,u, v, c表示交叉路口u和v之间有道路相连,分值为c。(1≤n≤300,1≤c≤10000)

输出格式

两个整数s, max,表示你选出了几条道路,分值最大的那条道路的分值是多少。

样例1

样例输入1

4 5
1 2 3
1 4 5
2 4 7
2 3 6
3 4 8

Copy

样例输出1

3 6

Copy

限制

每个测试点1s

来源

NOI2005四川省选拔赛第二试第3题

这些天都是遇到一个知识点就记录下一个知识点,今天还是在看图算法,最小生成树的kruskal算法,发现自己还是很菜,这是一道基础的入门题,就把这题来练练手吧

贴代码之前首先回顾一下kruskal的算法实现方式:

  kruskal同样也是一个最小生成树算法,这个算法需要用到的东西是并查集,本质还是贪心策略,为什么要用到并查集呢?

  因为这个算法涉及到连通分量的问题,要判断连通分量是否在同一个树中,需要用到并查集中的find 和same 来判断

  实现过程:首先对存储边的权值进行排序,不断地找到最小的边然后判断这条边连接的两个节点是否位于同一个连通分量中,为什么要判断是否在同一个连通分量中呢

  因为如果两个节点在同一个分量中了,你却还选择了这条边那么就会产生一个环了 ,就不符合题意!

  不在连通分量中就可以选择

kruskal的伪代码:

KRUSKAL-FUNCTION(G, w)
1    F := 空集合
2    for each 图 G 中的顶点 v
3        do 將 v 加入森林 F
4    所有的边(u, v) ∈ E依权重 w 递增排序
5    for each 边(u, v) ∈ E
6        do if u 和 v 不在同一棵子树
7            then F := F ∪ {(u, v)}
8                將 u 和 v 所在的子树合并

 本题的代码:

  

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
const int N=300;
const int M=10000+20;
int pre[N];
struct node{
    int u,v,w;
};
int n,m;
node rode[M];
bool cmp(node a,node b)
{
    return a.w<b.w;
}
void init()
{
    for(int i=1;i<=n;i++)
        pre[i]=i;
}
int find(int x)
{
    if(x==pre[x])    return x;
    else
    {
        pre[x]=find(pre[x]);
        return pre[x];
    }
}
bool same(int x,int y)
{
    int tx=find(x);
    int ty=find(y);
    if(tx!=ty)
    {
        pre[tx]=ty;
        return false;
    }
    return true;
}
void kruskal()
{
    init();
    sort(rode+1,rode+m+1,cmp);
    int cnt=0,sum=0;
    for(int i=1;i<=m;i++)
    {
        if(!same(rode[i].u,rode[i].v))
        {
            cnt++;
            sum=max(sum,rode[i].w);
        }
        if(cnt==n-1)    break;
    }
    printf("%d %d\n",cnt,sum);
}
int main()
{
    int u,v,w;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        for(int i=1;i<=m;i++)
        {
            scanf("%d%d%d",&u,&v,&w);
            rode[i].u=u;
            rode[i].v=v;
            rode[i].w=w;
        }
        kruskal();
    }
    return 0;
}

原文地址:https://www.cnblogs.com/acmblog/p/9612783.html

时间: 2024-10-22 04:35:06

vijos--繁华的都市的相关文章

SQLServer学习笔记系列6

一.写在前面的话 时间是我们每个人都特别熟悉的,但是到底它是什么,用什么来衡量,可能很多人会愣在那里.时间可以见证一切,也可以消磨一切,那些过往的点点滴滴可思可忆.回想往年清明节过后,在家乡的晚上总能听见阵阵的青蛙叫声,那是清脆的叫声,那是家乡的味道.时间一转眼,貌似那些日子已离我远去好久,在城市的喧嚣浮华中,找寻不到那种内心的宁静.感叹时间流逝的同时,怀念过去的点点滴滴.我想在繁华的都市中寻找一种安定的心情来学习,或许是一种不错的方式.学习才会让我们认清自己,找回自我,做内心的强者,不骄不躁,

扒一扒智能手机里的隐晦财富

自2007年iPhone横空出世之后,全世界都为之倾倒,并迅速投入感情.从美国总统到地铁青年,从第一夫人到东莞站街妹,无时无刻不与智能手机产生暧昧,我们恨不得天天挂到移动互联网上欲仙欲死:每天早上醒来,首先说一句"小屏,你好":而后一天中的任何阶段:吃饭.工作.社交.上厕所全要带着手机,如果有20分钟没打开手机,90%的人就会焦虑,觉得好像跟世界失去联系一样:每天入睡前,枕头边总会有星星点点的手机灯光,饥渴的双眼正做最后的挣扎,以其获取梦中的快感-."低头族"更是作

2016-4 职场生涯早期就应该随波逐流,固守一城一隅等于自找死路

经常碰到职场上的朋友发牢骚,某某地方工作难找啊.我说,36计,走为上.何不到北上广深试试.他说,大城市固然机会多,但竞争大,房价高,离家远,我迟早要回到本市的,毕竟离家近.我说,大城市虽然竞争大,但选择机会也大啊,虽然交通拥堵房价高,但大城市的空气是自由的,个人能力能达到最大的发挥,而家乡小城市,机会少,人际关系复杂,升迁靠关系.下面是最近一个学员的困惑,谈谈我的看法. 大部分人刚进入职场,面临经验,能力,人脉资源的不足,只能是被动就业,个人没有多少主动选择权,只能先就业,再择业.否则,就陷入了

找工作体会

不知不觉自己已经到了找工作的年纪了.也许你已经看出来了,字迹间确实夹杂着我的一点小小灰心.这话听着好像我很老似的,可是我才刚满22周岁,对!就在今天,刚刚到达青春如日中天的年纪. 来到这座繁华的都市,带着好奇到了外滩,看到了璀璨的“东方明珠”,也体会了人满为患这个词所描述的情景.前几天早上,背上装着希望的背包,两个小时的车程后来到三楼的一间办公室礼貌的询问了前台,被安排先写一些题目.写好后与HR几句简单的对话后便结束了此次面试,进入了漫长的等待.不知这是否是无数前辈们必经的路,我已经站在了这条路

新型交通代步工具

       随着科技时代的快速发展,消费者的需要不断与时俱进.当人们生活在快节奏高频率的繁华都市,忍受着挤地铁追公交的煎熬时,都希望有一双“风火轮”在城市中穿梭“漂移”,直奔想去的地方,感受途中化形的快感和舒畅.       对于大多数上班族,上学族来说,有谁可以被清晨第一缕阳光唤醒,享受完美味的早餐,然后漫步在繁华的都市,开启一天的征程呢?或许,这个答案是零!媒体曾经报道,近80%的上班族,上学族具有“起床困难症”,早晨的每一分钟都弥足珍贵,早餐一般在等车的过程中解决,卫生情况令人堪忧,而且

一步随心,一生无悔

一步的距离很短,但很宽,迈出一步,面临的也许是浩瀚的星空:迈出一步,看见的也许是残垣断壁的萧条.然浩瀚的星空如何,残垣断壁又如何?走一步,只随我心. 或许五柳先生就是这样的人吧,尘世仕途的钩心斗,从此过着“采菊东篱下,悠然见南山”的闲适的生活. 但对于他的归隐,却又有人不理解.如果他不归隐,最后也不会饿死在草屋.的确,如果他继续做官,不但不会饿死,也许还能金银满地.但他就是他,不会因为箪瓢屡空而为五斗米折腰,更不会为了苟活于世而与世俗同流合污.能饮酒作诗在哪不是世外桃源,人间仙境,物质生活的在富

台语歌谣的奇葩── 邓雨贤

文 / 文静 邓雨贤,台湾桃园龙潭人.生于公元一九○六年七月二十一日,卒于公元一九四四年六月十一日,享年三十九岁.作品约有五十余首,较著名者如下:〈望春风〉.〈月夜愁〉.〈雨夜花〉.〈四季红〉.〈春宵吟〉.〈碎心花〉.〈一个红蛋〉.〈对花〉.〈满面春风〉.〈想欲弹同调〉等等. 四月望雨 传世歌谣 在台语流行歌曲之中,有所谓的「四.月.望.雨」,指的便是〈四季红〉.〈月夜愁〉.〈望春风〉.〈雨夜花〉四首台语歌谣,这四首台语歌谣在当初面世之时都曾造成一时轰动,甚至达到大街小巷人人传唱的地步:即使时间

生命是一场懂得

生命是一场懂得,剪一段流年的时光,握着一路相随的暖,把最平淡的日子梳理成诗意的风景. 尚记儿时,喜欢漫游在阡陌小路上,心里想着,这弯弯曲曲的小路究竟会通到哪里的天涯呢?随手拈来一朵野花,傻傻的望着碧洗的天空和丝缕飘荡的白云,寻思着,这蓝天白云又会通到哪里的天高海阔呢?择一处净地蹲坐下来,沐浴着阳春三月的风,凝视着随风摇曳的柳条,思绪随风飞扬…… 那时的我们正如春日里盛开的梅花,耐不住寒冬的寂寞,经不起时光的平淡,要在万物复苏的春季热闹一番.殊不知,春日里的花已少了冬日里梅花应有的凌寒留香. 上小

正月初八到中心场看龙灯

中华民族以龙的传人自居,龙是中华民族自强不息的精神象征.中国人口最多的是农民,地面最广的是农村,与大自然.天气结合最紧密的是农业,农民对龙寄予了生活的希望,舞龙灯仍然是农民祈盼新年丰收好运的隆重仪式,以及春节农闲的娱乐活动.舞龙成了中华民族歌颂祖国.礼赞幸福生活的重要文艺形式,无论是在繁华的都市,还是在宁静的乡村,只要有中国人的地方,就能看到舞龙. 贵州遵义县的春节舞龙活动遍及全县,形成了龙坪.兴隆.尚嵇.三合.三岔等许多玩龙出名的地方.      “龙坪龙灯”主要有两种,一种是用布制作,白天在

山的情怀

山的情怀是用山的精髓写就的,山的情怀在于无限风光在险峰的昂扬奋进.相对于河流湖泊海洋.草原.荒漠,我更钟情于山.山和水,是大自然中两种截然不同的形态.山的存在是一种情怀.山的情怀是深沉的,因为他稳重:山的情怀是丰盈的,因为他敦实:山的情怀是豪迈的,因为他坦荡.山,执着挺拔,志在青云:水,豁达顺畅,志向深远.山,追求正直向上:水,向往辽阔浩瀚.山永远喜欢静:水,永远爱好动.建筑垃圾筛我曾痴情于山,喜欢它的青翠隽永.山,给人以钢的启迪:水给人以柔的感觉.山,是伟大的.她的伟大不仅仅在于她的伟岸高耸,