/*
最短路+最小生成树
题意:给定一张图,起点,终点。求起点到终点的一条路(这条路经过的最长的一段要最短!)
枚举这条“最长的路”,可二分,也可直接计算出。
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<queue>
using namespace std;
const int maxn = 2005;
const int maxm = 50005;
const int inf = 99999999;
int mat[ maxn ][ maxn ];
int fa[ maxn ];
bool vis[ maxn ];
int dis[ maxn ];
struct Node{
int x,y,val;
}edge[ maxm<<1 ];
int cmp( Node a,Node b ){
return a.val<b.val;
}
void init( int n ){
for( int i=1;i<=n;i++ ){
fa[ i ] = i;
for( int j=1;j<=n;j++ ){
mat[i][j] = inf;
}
}
}
int find( int x ){
if( x==fa[x] )
return x;
return fa[x] = find(fa[x]);
}
int Kruskal( int n,int m,int A,int B ){
sort( edge,edge+m,cmp );
int x,y;
int MaxEdge = 0;
for( int i=0;i<m;i++ ){
x = find( edge[i].x );
y = find( edge[i].y );
if( x!=y ){
if( x>y ) fa[y] = x;
else fa[x] = y;
if( find(A)==find(B) ){
MaxEdge = edge[i].val;
return MaxEdge;
}
MaxEdge = max( MaxEdge,edge[i].val );
}
}
return MaxEdge;
}
int Dij( int n,int MaxEdge,int A,int B ){
for( int i=1;i<=n;i++ ){
vis[i] = false;
dis[i] = inf;
}
dis[ A ] = 0;
for( int i=1;i<=n;i++ ){
int M = inf;
int id = -1;
for( int j=1;j<=n;j++ ){
if( !vis[j] && M>dis[j] ){
M = dis[j];
id = j;
}
}
if( id==-1 ) break;
vis[ id ] = true;
for( int j=1;j<=n;j++ ){
if( !vis[j] && dis[j]>dis[id]+mat[id][j] && mat[id][j]<=MaxEdge ){
dis[j] = dis[id]+mat[id][j];
}
}
}
return dis[B];
}
int main(){
//freopen("in.txt","r",stdin);
int n,m,A,B;
while( scanf("%d%d%d%d",&n,&m,&A,&B)!=EOF ){
init( n );
for( int i=0;i<m;i++ ){
scanf("%d%d%d",&edge[i].x,&edge[i].y,&edge[i].val);
if( mat[edge[i].x][edge[i].y]>edge[i].val ){
mat[edge[i].x][edge[i].y] = mat[edge[i].y][edge[i].x] = edge[i].val;
}
}
int MaxEdge = 0;
MaxEdge = Kruskal( n,m,A,B );
//printf("MaxEdge = %d\n",MaxEdge);
int Sum = Dij( n,MaxEdge,A,B );
printf("%d\n",Sum);
}
}
分享到:
相关推荐
**FORTOCSU_IDE__CSU-IDE软件使用教程_芯海_** 这篇教程将详细介绍芯海科技推出的集成开发环境(Integrated Development Environment,简称IDE)——CSU-IDE的使用方法。作为一款专为芯海芯片设计的开发工具,CSU-...
基于photo shop软件全人工标注的混凝土裂隙数据集CSU-Crack(涵盖了常见混凝土特定应用场景图像,包括隧道内壁裂隙、路面裂隙、地上建筑表面裂隙,为裂隙图像识别算法的研究及后续裂隙参数数字表征提供研究数据)....
混凝土裂隙数据集CSU-Crack(Photoshop全人工标注,涵盖常见应用场景图像).zip 【资源说明】 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能...
在2003年发表的《捕收剂CSU-A与黄铜矿作用机理》一文中,欧乐明、冯其明和沈刚等学者对捕收剂CSU-A与黄铜矿和黄铁矿的相互作用机理进行了深入研究。该研究通过多种实验方法,包括矿物浮选实验、吸附量测试以及红外...
CSU-Global-MIS581_Capstone_Thesis是一个与SAS Enterprise Miner相关的顶点论文项目,专为CSU-Global的学生设计,旨在帮助他们深入理解和应用数据挖掘技术。SAS Enterprise Miner是一款强大的数据挖掘工具,广泛...
中南大学的`csu-thesis`是一个专为中南大学学生设计的LaTeX模板,用于撰写学术论文。LaTeX是一种基于TeX的排版系统,它以强大的数学公式排版和高质量的文档输出而闻名。这个模板使得撰写学位论文变得更加规范和高效...
【CSU Central Package:深入解析CSU First实例的中央软件包】 在IT行业中,中央软件包(Central Package)是组织和管理大型系统组件的关键组成部分,它通常包含一系列用于支持核心业务流程的应用程序和服务。"CSU ...
CSU8ASM-IDE是一款专为CSU8ASM汇编语言设计的集成开发环境(IDE),版本号为1.3.5。这个IDE是程序员编写、调试和优化CSU8ASM代码的重要工具,旨在提高开发效率和代码质量。在本文中,我们将详细探讨这款IDE的功能...
- 图论算法: 最短路径问题(Dijkstra算法、Floyd算法)、最小生成树(Kruskal算法、Prim算法)等。 2. **高级算法**: - 网络流: 最大流最小割问题(Max-Flow Min-Cut)、匈牙利算法等。 - 几何问题: 凸包构建、最近点...
The W79E825 series are an 8-bit Turbo 51 microcontroller which has an in-system programmable ... The instruction set of the W79E825 series are fu lly compatible with the standard 8052....
《CSU模拟电子技术B仿真研讨一》的压缩包中包含了一系列的仿真案例和相关文档,旨在提升学生对模拟电子技术的理解和应用能力。它不仅要求学生掌握书本上的理论知识,而且更注重理论与实践的结合,让学生通过仿真软件...
《CSU88RP1185D与CS1239在额温枪设计中的应用及公版解析》 额温枪作为一种非接触式的体温测量设备,近年来因其便捷、安全的特点,在医疗和日常生活场景中得到了广泛应用。本资料包包含了CSU88RP1185D与CS1239在额温...
C-Free是一款支持多种编译器的专业化C/C 集成开发环境(IDE)。利用本软件,使用者可以轻松地编辑、编译、连接、运行、调试C/C 程序。C-Free中集成了C/C 代码解析器,能够实时解析代码,并且在编写的过程中给出智能...
#欢迎来到这个 OSX Csu-85 wiki! ##构建丢失的Mac“crt0.o”文件 您是否注意到简单地将 GNU 配置标志应用于静态链接可执行文件对于更复杂的软件包分发失败? 您是否编译过抱怨找不到 crt0.o 的代码? 你并不孤单。...
在"CSU-ECE455-master"这个项目中,可能包含了实现阻尼最小二乘法的MATLAB源代码,包括定义模型、构建矩阵、设置阻尼因子、执行优化以及结果展示等部分。通过阅读和理解这些代码,你可以更深入地了解如何在实际的...
CSU8ASM-IDE是一款专为CSU8ASM汇编语言设计的集成开发环境(IDE),它集成了代码编辑、编译、调试等多种功能,旨在提高程序员的开发效率和代码质量。这款软件对于学习和使用CSU8ASM汇编语言的用户来说是一个不可或缺...
项目此回购已使用初始模板填充,以帮助您入门。 请确保更新内容,以为社区建设创造良好的体验。 作为该项目的维护者,请进行一些更新: 改进此README.MD文件可提供出色的体验使用有关该项目的支持经验的内容更新...
在CSU-F(假设是某个大学的缩写)中,UX研究是一个重要的领域,旨在理解用户需求,提升产品的可用性、易用性和满意度。通过深入的UX研究,可以为设计决策提供数据支持,确保最终产品能够满足目标用户群体的实际需求...