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. 使用HttpWebRequest发送自定义POST请求

    平时用浏览器看网页的时候,点击一下submit按钮的时候其实就是给服务器发送了一个POST请求.但是如何在自己的C#程序里面实现类似的功能呢?本文给出了一个简单的范例,可以实现类似的和web serv ...

  2. 在线预览Office文件【效果类似百度文库】(转载)

    转载地址:http://www.cnblogs.com/sword-successful/p/4031823.html 引言 结合上个项目和目前做的这个项目,其中都用到了Office文件在线预览,目前 ...

  3. Spring.Net学习之简单的知识点(一)

    1.Spring.Net是一个开源的应用程序框架,可以简化开发主要功能(1)实现控制反转(IOC/DI),也就是不要直接new,依赖于接口(2)面向切面编程(AOP),就是向程序中利用委托注册事件简单 ...

  4. Dapper.NET 使用简单举例

    概述 Dapper是.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的.也就是说实体类都要自己写.它没有复杂的配置文件,一个单文 ...

  5. SQL中的多表查询,以及JOIN的顺序重要么?

    说法是,一般来说,JOIN的顺序不重要,除非你要自己定制driving table. 示例: SELECT a.account_id, c.fed_id, e.fname, e.lname -> ...

  6. 讲解JS的promise,这篇是专业认真的!

    http://www.zhangxinxu.com/wordpress/2014/02/es6-javascript-promise-%E6%84%9F%E6%80%A7%E8%AE%A4%E7%9F ...

  7. 登录成功,拿到token

    历尽波折,终于成功登录并拿到了token: - (LoginResultDto *)login:(NSString *)userName andPassword:(NSString *)passwor ...

  8. xcode6 下 ios simulator 有 Home 键么?

    4s之前 ,现在,只能用command+shift+h来代替

  9. $(function(){})与window.onload的区别

    不太一样window.onload是在页面所有的元素都加载完成后才触发$(function(){})是在页面的dom结构加载完毕后就触发 dom里的内容不一定都已经加载完成比如说一个页面有好多图片 而 ...

  10. document对象(二)

    五.相关元素操作: var a = document.getElementById("id");                找到a: var b = a.nextSibling ...