国王的烦恼

时间限制: 3000 ms  |  内存限制: 65535 KB
难度: 2
描述

C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了m座大桥,每座大桥连接两座小岛。两个小岛间可能存在多座桥连接。然而,由于海水冲刷,有一些大桥面临着不能使用的危险。如果两个小岛间的所有大桥都不能使用,则这两座小岛就不能直接到达了。然而,只要这两座小岛的居民能通过其他的桥或者其他的小岛互相到达,他们就会安然无事。但是,如果前一天两个小岛之间还有方法可以到达,后一天却不能到达了,居民们就会一起发起抗议。

现在C国的国王已经知道了每座桥能使用的天数,超过这个天数就不能使用了。现在他想知道居民们一共会发起多少次抗议。

输入
多组测试数据。
  每组数据先输入两个正整数n和m。
  接下来m行,每行三个整数a, b, t,分别表示该座桥连接a号和b号两个小岛,能使用t天。小岛的编号从1开始递增。(1≤n≤10000,1≤m≤100000,1<=a,b<=n,1≤t≤100000)
输出
输出一个整数,表示居民们发起抗议的次数。
样例输入
4 4
1 2 2
1 3 2
2 3 1
3 4 3
样例输出
2
提示
对于样例:
第一天后2和3之间的桥不能使用,不影响。
第二天后1和2之间,以及1和3之间的桥不能使用,居民们会抗议。
第三天后3和4之间的桥不能使用,居民们会抗议。
来源
蓝桥杯
上传者
TC_李远航

分析:

最小生成树变形,逆向思维,转换成建桥问题。

将能使用天数从大到小排序,并查集处理。
代码:
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;const int maxn = 10000 + 5, maxm = 100000 + 5;
int f[maxn], lastday;
struct node
{int x, y, v;bool operator < (const node& a) const {     //按天数排序return v > a.v;}
} N[maxm];int Find(int x)             //找 x 所在的树根
{return f[x] == x ? x : f[x] = Find(f[x]);
}bool Union(int x, int y)
{int tx = Find(x), ty = Find(y);if(tx == ty)                //它俩在同一个连通分量return false;f[tx] = ty;                 //合并两个连通分量return true;
}
int main()
{int n, m;while(~scanf("%d%d", &n, &m)) {for(int i = 0; i < m; i++) scanf("%d%d%d", &N[i].x, &N[i].y, &N[i].v);sort(N, N + m);for(int i = 0; i <= n; i++) f[i] = i;       //初始化并查集int cnt = 0;lastday = -1;for(int i = 0; i < m; i++) {if(Union(N[i].x, N[i].y) && N[i].v != lastday) { //两个小岛不连通,且与上一个大桥的天数不同cnt++;lastday = N[i].v;}}printf("%d\n", cnt);}return 0;
}

NYOJ 925 国王的烦恼相关推荐

  1. nyoj 925 国王的烦恼(最小生成树)

    /* 题意:N个城市中每两个城市有多条路径连接,可是因为路径存在的天数是有限的!以为某条路经不存在了 导致N个城市不能连通了,那么村名们就会抗议!问一共会有多少次抗议! 思路:最小生成树....我们用 ...

  2. 蓝桥杯历届试题 国王的烦恼(并查集逆序加边+坑)

    历届试题 国王的烦恼   时间限制:1.0s   内存限制:256.0MB 问题描述 C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了m座大桥,每座大桥连接两座小岛.两个小岛间可能存在多座 ...

  3. [蓝桥杯][历届试题]国王的烦恼(反向+并查集)

    问题 1435: [蓝桥杯][历届试题]国王的烦恼 时间限制: 1Sec 内存限制: 128MB 提交: 802 解决: 213 题目描述 C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了 ...

  4. 【蓝桥杯】 历届试题 国王的烦恼(并查集)

    历届试题 国王的烦恼 问题描述 C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了m座大桥,每座大桥连接两座小岛.两个小岛间可能存在多座桥连接.然而,由于海水冲刷,有一些大桥面临着不能使用的 ...

  5. 蓝桥杯国王的烦恼java,国王的烦恼 蓝桥杯

    国王的烦恼 蓝桥杯 题意 C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了m座大桥,每座大桥连接两座小岛.两个小岛间可能存在多座桥连接.然而,由于海水冲刷,有一些大桥面临着不能使用的危险. ...

  6. 蓝桥 历届试题 国王的烦恼

    历届试题 国王的烦恼 时间限制:1.0s   内存限制:256.0MB 问题描述 C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了m座大桥,每座大桥连接两座小岛.两个小岛间可能存在多座桥连 ...

  7. NYOJ 264 国王的魔镜

    国王的魔镜 时间限制:3000 ms  |  内存限制:65535 KB 难度:1 描述 国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍--只是,因为是镜子嘛,增加的那部分是反的. 比如一条项 ...

  8. NYOJ 682 初学者的烦恼

    初学者的烦恼 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 小c才开始学习c语言,让他最烦恼的就是对字符数组的操作.小C的好朋友小E为了激励他,出了这样一个题目:字符串 ...

  9. NYOJ 小珂的烦恼

    小珂的烦恼 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 小珂遇到了一个麻烦的问题,有这样的N对数(1,2),(3,5),(4,7),(6,10)--,第i对的差值为i ...

最新文章

  1. 周长相等的正方形面积一定相等_必考单元:三年级下册面积计算公式+知识点+测试卷(附答案),重点内容,收藏练习!...
  2. 【Android 应用开发】Paint 图形组合 Xfermod 之 合成模式表示方法 ( Xfermod 使用步骤 | 透明度 颜色值 公式表示方法 | 老版本表示方法 | 合成区域分块 )
  3. C# using的用法
  4. vbs用mysql语句查询数据库_vbs脚本实现window环境下的mysql数据库的备份及删除早期备份...
  5. 转 : 深入解析Java锁机制
  6. Android 6.0 动态权限申请
  7. python如何读取csv文件某几行某几列_关于python:读取.csv文件时,我似乎无法指定列dtypes...
  8. mybatis3.1-[topic-16-17]-映射文件_增删改查_insert_获取自增主键的值
  9. CAD图纸上面缺失的线条如何将其进行补充?
  10. 51nod-1065:最小正子段和
  11. SSH (Struts2+Spring3.0+Hibernate3)框架(二) 框架的配置
  12. timeroc 最优最佳截断值特异度(specificity)与灵敏度(sensitivity)
  13. JS一些常用证件信息的正则表达式
  14. SpringBoot中怎么访问静态图片
  15. html用360打不开,win7系统使用360安全卫士解决浏览器打不开的方法
  16. outlook邮件通过python发送_怎么发送邮箱-python调用outlook发送邮件的超详细操作步骤...
  17. 电子元器件篇---三极管
  18. 扫地机器人相关传感器技术
  19. TLF 0day SERVER 列表
  20. dns劫持与http劫持

热门文章

  1. python爬取京东网页商品实例(一)
  2. access随系统启动的宏_Access 中启动带宏的excel
  3. 小马哥----4G定制版i6(仿苹果6 6571芯片) 拆机外观与与开机界面图
  4. #力扣 LeetCode35. 搜索插入位置 #在所有 Java 提交中击败了 100.00% 的用户 @FDDLC
  5. 自助广告插件系统 7.4版本 高颜值网站广告代码
  6. Android代码设置APN
  7. 山东科技大学计算机科学与技术学硕,2021年山东科技大学计算机科学与技术(081200)硕士研究生招生信息_考研招生计划和招生人数 - 学途吧...
  8. 分支语句和循环语句[一]【详解】
  9. 只有mdf文件和ldf文件--怎么恢复数据库
  10. TensorFlow安装和下载详细教程-内附多种解决方案