After leaving Yemen, Bahosain now works as a salesman in Jordan. He spends most of his time travelling between different cities.

He decided to buy a new car to help him in his job, but he has to decide about the capacity of the fuel tank.

The new car consumes one liter of fuel for each kilometer. Each city has at least one gas station where Bahosain can refill the tank,

but there are no stations on the roads between cities. Given the description of cities and the roads between them, find the minimum capacity for the fuel tank needed

so that Bahosain can travel between any pair of cities in at least one way. Input The first line of input contains T (1 ≤ T ≤ 64)​that represents the number of test cases.

The first line of each test case contains two integers: N (3 ≤ N ≤ 100,000)​and M (N-1 ≤ M ≤ 100,000)​, where N​is the number of cities, and M​is the number of roads.

Each of the following M​lines contains three integers: X Y C (1 ≤ X, Y ≤ N)(X ≠ Y)(1 ≤ C ≤ 100,000)​, where C​is the length in kilometers between city X​and city Y​.

Roads can be used in both ways. It is guaranteed that each pair of cities is connected by at most one road, and one can travel between any pair of cities using the given roads. Output For each test case, print a single line with the minimum needed capacity for the fuel tank.

Sample Input

2

6 7

1 2 3

2 3 3

3 1 5

3 4 4

4 5 4

4 6 3

6 5 5

3 3

1 2 1

2 3 2

3 1 3

Sample Output

4

2

哎,这道题也是一样,以后写代码还是不要专门注意手速比较好,果然写对才是王之道,这一水题理当应该写对,是的是对的,

可是在对的情况下代码顺寻反了,判断条件没放对位置,搞得我找了好久,悲催,错点在注释中标记,用来告诫自己:

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
using namespace std; #define INF 0x3f3f3f3f
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1 const int MX = 111111;
int road[MX]; struct Node {
int a, b, c;
}node[MX]; int n, m; bool comp(const Node& n1, const Node& n2) {
return n1.c < n2.c;
} int FindRoot(int r) {
return road[r] == r ? r : (road[r] = FindRoot(road[r]));
} void ini() {
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; i++) {
road[i] = i;
}
for (int i = 0; i < m; i++) {
scanf("%d %d %d", &node[i].a, &node[i].b, &node[i].c);
}
sort(node, node + m, comp);
} int main()
{
//freopen("input.txt", "r", stdin);
int cas;
while (scanf("%d", &cas) != EOF) {
while (cas--) {
ini();
int ans = 0;
for (int i = 0; i < m; i++) {
int root1 = FindRoot(node[i].a);
int root2 = FindRoot(node[i].b);
if (root1 != root2) {
n--;
road[root2] = root1;
ans = max(ans, node[i].c);
}
if (n == 1) {
printf("%d\n", ans);/*自己仔细想想为什么这个不能放在root1上面进行判断,要知道如果数据只有一组,它就得出ans直接跳出了,因为循环只运行一次,因此会变得没有输出*/
break;
}
}
}
}
return 0;
}

Codeforce - Travelling Salesman的更多相关文章

  1. PAT A1150 Travelling Salesman Problem (25 分)——图的遍历

    The "travelling salesman problem" asks the following question: "Given a list of citie ...

  2. Codeforces 914 C. Travelling Salesman and Special Numbers (数位DP)

    题目链接:Travelling Salesman and Special Numbers 题意: 给出一个二进制数n,每次操作可以将这个数变为其二进制数位上所有1的和(3->2 ; 7-> ...

  3. Codeforces 374 C. Travelling Salesman and Special Numbers (dfs、记忆化搜索)

    题目链接:Travelling Salesman and Special Numbers 题意: 给了一个n×m的图,图里面有'N','I','M','A'四种字符.问图中能构成NIMA这种序列最大个 ...

  4. PAT 甲级 1150 Travelling Salesman Problem

    https://pintia.cn/problem-sets/994805342720868352/problems/1038430013544464384 The "travelling ...

  5. HDU 5402(Travelling Salesman Problem-构造矩阵对角最长不相交路径)

    Travelling Salesman Problem Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (J ...

  6. 构造 - HDU 5402 Travelling Salesman Problem

    Travelling Salesman Problem Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=5402 Mean: 现有一 ...

  7. Codeforces 914 C Travelling Salesman and Special Numbers

    Discription The Travelling Salesman spends a lot of time travelling so he tends to get bored. To pas ...

  8. 1150 Travelling Salesman Problem(25 分)

    The "travelling salesman problem" asks the following question: "Given a list of citie ...

  9. HDU 5402 Travelling Salesman Problem (构造)(好题)

    大致题意:n*m的非负数矩阵,从(1,1) 仅仅能向四面走,一直走到(n,m)为终点.路径的权就是数的和.输出一条权值最大的路径方案 思路:因为这是非负数,要是有负数就是神题了,要是n,m中有一个是奇 ...

随机推荐

  1. EF – 4.CRUD与事务

    5.6.1 <Entity Framework数据更新概述>  首先介绍Entity Framework实现CRUD的基本方法,接着介绍了如何使用分部类增强和调整数据实体类的功能与行为特性 ...

  2. wifi diplasy流程介绍

    转自:http://blog.csdn.net/dnfchan/article/details/8558552/  另外一篇不错的参考文章:http://www.360doc.com/content/ ...

  3. PHP中array_merge和array相加的区别分析

    今天处理一个这样的问题:如何获取字符键名相同值不同的两个数组值集合,用array_merge和数组相加都不可行,让我认真比较了下PHP中array_merge和array相加的区别 首先来看看键名是s ...

  4. sqlplus 中spool命令的简单用法

    spool基本格式: spool 路径+文件名 select col1||','||col2||','||col3||','||col4||'..' from tablename; spool off ...

  5. log4j设置日志格式为UTF-8

    想要log4j输出的日志文件的编码格式为UTF-8.正常情况下只需要添加下述的代码即可: log4j.appender.appender_name.Encoding=UTF-8 但是在spring与l ...

  6. AOP常用术语

    1.连接点(Joinpoint) 程序执行的某个特定位置:如类开始初始化前,类初始化后,类某个方法调用前,调用后,方法跑出异常后.一个类或一段程序代码拥有一些具有边界性质的特定点.这些代码中的特定点就 ...

  7. oracle相关环境变量配置

    ORACLE_HOME:D:\Program File\oracle\product\10.2.0\db_1 ORACLE_SID:orcl Path中增加:D:\ProgramFile\oracle ...

  8. C# 实现单实例程序

    在我们经常使用的软件中,当我们已经打开后,再次打开时,有的软件不会出现两个.例如有道词典,会将上次的界面显示出来,或者提示我们“该程序已经运行...”.我通过一个简单的C# WPF例子来说明. 首先我 ...

  9. python数学运算的类型转换

    类型转换 Rational类实现了有理数运算,但是,如果要把结果转为 int 或 float 怎么办? 考察整数和浮点数的转换: >>> int(12.34) 12 >> ...

  10. ZK常用命令

    zkcli脚本命令介绍 zkcli    连接默认zookeeper服务器 zkcli -server ip:port    连接指定的zookeeper服务器 create -s -e path d ...