原题传送门
这道题目基本就是一个克鲁斯卡尔最小生成树的模板题,唯一不同的是,这道题目的最终目标不是所有点相连,而是只要s和t相连就可以了。还有就是这道题目求的是最小生成树中的最大边权值。
但是,克鲁斯卡尔是从最小的边权值开始考虑的,当s和t第一次连通时考虑的那条边,就是当前考虑的最大的权值的边,直接输出就可以了啊。
代码也很简单,贴一下:
#include
using namespace std;
struct noded
{
int u,v;
int w;
noded(){}
noded(int uu,int vv,int ww)
{
u=uu,v=vv,w=ww;
}
}mp[200010];
bool cmp(noded x,noded y)
{
return x.w>n>>p>>s>>t;
for(int i=1;i<=p;i++)
{
cin>>mp[i].u>>mp[i].v>>mp[i].w;
}
sort(mp+1,mp+1+p,cmp);
//for(int i=1;i<=k;i++)
//{
// cout<