【题解】P1396 营救-C++

原题传送门
这道题目基本就是一个克鲁斯卡尔最小生成树的模板题,唯一不同的是,这道题目的最终目标不是所有点相连,而是只要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<

你可能感兴趣的:(【题解】P1396 营救-C++)