Travelling Salesman

 

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

Sample Output

2

4

6

7

2

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

/*
题意:
旅游者想走遍全世界,一共有N个城市,他需要买一辆车,但是他抠,想买便宜点的就是油箱最小的
每条路走过需要消耗 cost的油,找出最小的油箱需求。 这题正好是前几天刷的最小生成树,排序后,维护最小树的最大边就行,代码就不多加注释了。 AC代码:
*/ #include"iostream"
#include"algorithm"
#include"cstdio"
#include"cstring"
#include"cmath"
#define MX 100000 + 50
using namespace std; int pe[MX];
struct node {
int u,v,cost;
} road[MX]; bool cmp(node a,node b) {
return a.cost<b.cost;
} int find(int x) {
return pe[x]==x?x:(pe[x]=find(pe[x]));
}
int main() {
int T,n,q,num,maxx;
scanf("%d",&T);
while(T--) {
scanf("%d%d",&n,&q);
for(int i=0; i<=n; i++) {
pe[i]=i;
}
num=n-1;
for(int i=0; i<q; i++) {
scanf("%d%d%d",&road[i].u,&road[i].v,&road[i].cost);
}
maxx=0;
sort(road,road+q,cmp);
for(int i=0; i<q; i++) {
int rt1=find(road[i].u);
int rt2=find(road[i].v);
if(rt1!=rt2) {
pe[rt2]=rt1;
maxx=max(maxx,road[i].cost);
num--;
}
if(!num)break;
}
printf("%d\n",maxx);
}
return 0;
}

  

ACM: 限时训练题解- Travelling Salesman-最小生成树的更多相关文章

  1. ACM: 限时训练题解-Rock-Paper-Scissors-前缀和

    Rock-Paper-Scissors   Rock-Paper-Scissors is a two-player game, where each player chooses one of Roc ...

  2. ACM: 限时训练题解-Runtime Error-二分查找

    Runtime Error   Bahosain was trying to solve this simple problem, but he got a Runtime Error on one ...

  3. ACM: 限时训练题解-Heavy Coins-枚举子集-暴力枚举

    Heavy Coins   Bahosain has a lot of coins in his pocket. These coins are really heavy, so he always ...

  4. ACM: 限时训练题解-Epic Professor-水题

    Epic Professor   Dr. Bahosain works as a professor of Computer Science at HU (Hadramout    Universit ...

  5. ACM: 限时训练题解-Street Lamps-贪心-字符串【超水】

    Street Lamps   Bahosain is walking in a street of N blocks. Each block is either empty or has one la ...

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

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

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

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

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

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

  9. 构造 - HDU 5402 Travelling Salesman Problem

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

随机推荐

  1. 在ubuntu上搭建开发环境9---Ubuntu删除ibus出现的问题及解决

    删除 ibus输入法: sudo apt-get install ibus 我们会遇到下面的问题 Ubuntu 14.04 系统设置很多选项消失. 其实遇到这个问题的一个最主要的原因是之前执行过卸载i ...

  2. Pyqt QSystemTrayIcon 实现托盘效果

    pyqt的托盘效果很好实现,在Pyqt的demo中有个例子 路径:PyQt4\examples\desktop\systray.py 今天我就仿这个Tray效果做效果 一. 创建UI trayicon ...

  3. centos安装oracle 11g 完全图解

    摘要: 说明: Linux服务器操作系统:CentOS 5.8 32位(注意:系统安装时请单独分区/data用来安装oracle数据库) Linux服务器IP地址:192.168.21.150 Ora ...

  4. css2

    CSS 实现div宽度根据内容自适应 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...

  5. Windows phone 8.0 本地化遇到的两个问题

    基本上来说,按照msdn来讲的,本地化和全球化没有太多的问题,链接如下: http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/ff ...

  6. codeforces Round#380 div2

    1.字符串替换ogo+go…换成*** 思路:找ogo记录g位置,做初步替换和标记,非目标字母直接输出, 间隔为2的判断是否一个为标记g,一个为非标记做***替换 #include<iostre ...

  7. World of Warcraft

    一大堆快捷键 鼠标中键:致盲 上滚:闪避 下滚:疾跑 通用:~伺机待发 Q加速 E斗篷 R徽章 T消失 alt+Q脚踢,alt+W毒刃 alt+E亡灵意志 alt+D烟幕弹 alt+F死亡标记 Z天降 ...

  8. MySQL的中文编码问题

    创建表格时,怎么让表格显示中文?注意:不区分大小写 mysql> ALTER TABLE 表格的名字 CONVERT TO CHARACTER SET UTF8; 怎么让默认的数据库支持中文字符 ...

  9. 智能车学习(二十一)——浅谈CCD交叉以及横线摆放

    一.CCD为何要交叉摆放?       首先使用横线摆放,CCD前瞻如果远一点,弯道丢线,再远一点直接窜道.所以需要很多很多代码的工作量,而且过弯的过程相当于没有任何的调节过程,就是一个偏差保持,或者 ...

  10. Java可变参数讲解

    如果实现的多个方法,这些方法里面逻辑基本相同,唯一不同的是传递的参数的个数,可以使用可变参数可变参数的定义方法 数据类型...数组的名称,这个数组存储传递过来的参数,类似JavaScript注意点:  ...