`
xxx0624
  • 浏览: 31709 次
文章分类
社区版块
存档分类
最新评论

CSU-1307-CityTour+Dij+Kruskal

 
阅读更多
/*
最短路+最小生成树
题意:给定一张图,起点,终点。求起点到终点的一条路(这条路经过的最长的一段要最短!)
	枚举这条“最长的路”,可二分,也可直接计算出。
*/
#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软件使用教程_芯海_

    **FORTOCSU_IDE__CSU-IDE软件使用教程_芯海_** 这篇教程将详细介绍芯海科技推出的集成开发环境(Integrated Development Environment,简称IDE)——CSU-IDE的使用方法。作为一款专为芯海芯片设计的开发工具,CSU-...

    基于photo shop软件全人工标注的混凝土裂隙数据集CSU-Crack(涵盖了常见混凝土特定应用场景图像).zip

    基于photo shop软件全人工标注的混凝土裂隙数据集CSU-Crack(涵盖了常见混凝土特定应用场景图像,包括隧道内壁裂隙、路面裂隙、地上建筑表面裂隙,为裂隙图像识别算法的研究及后续裂隙参数数字表征提供研究数据)....

    混凝土裂隙数据集CSU-Crack(Photoshop全人工标注,涵盖常见应用场景图像).zip

    混凝土裂隙数据集CSU-Crack(Photoshop全人工标注,涵盖常见应用场景图像).zip 【资源说明】 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能...

    捕收剂CSU-A与黄铜矿作用机理 (2003年)

    在2003年发表的《捕收剂CSU-A与黄铜矿作用机理》一文中,欧乐明、冯其明和沈刚等学者对捕收剂CSU-A与黄铜矿和黄铁矿的相互作用机理进行了深入研究。该研究通过多种实验方法,包括矿物浮选实验、吸附量测试以及红外...

    CSU-Global-MIS581_Capstone_Thesis:SAS Enterprise Miner的CSU-Global MIS581顶点论文代码

    CSU-Global-MIS581_Capstone_Thesis是一个与SAS Enterprise Miner相关的顶点论文项目,专为CSU-Global的学生设计,旨在帮助他们深入理解和应用数据挖掘技术。SAS Enterprise Miner是一款强大的数据挖掘工具,广泛...

    csu-thesis:中南大学学术论文LaTex模板。

    中南大学的`csu-thesis`是一个专为中南大学学生设计的LaTeX模板,用于撰写学术论文。LaTeX是一种基于TeX的排版系统,它以强大的数学公式排版和高质量的文档输出而闻名。这个模板使得撰写学位论文变得更加规范和高效...

    csu-central-package:CSU First实例的中央软件包

    【CSU Central Package:深入解析CSU First实例的中央软件包】 在IT行业中,中央软件包(Central Package)是组织和管理大型系统组件的关键组成部分,它通常包含一系列用于支持核心业务流程的应用程序和服务。"CSU ...

    CSU8ASM-IDE

    CSU8ASM-IDE是一款专为CSU8ASM汇编语言设计的集成开发环境(IDE),版本号为1.3.5。这个IDE是程序员编写、调试和优化CSU8ASM代码的重要工具,旨在提高开发效率和代码质量。在本文中,我们将详细探讨这款IDE的功能...

    acm题目归类,各类题目列举,集训手册csu

    - 图论算法: 最短路径问题(Dijkstra算法、Floyd算法)、最小生成树(Kruskal算法、Prim算法)等。 2. **高级算法**: - 网络流: 最大流最小割问题(Max-Flow Min-Cut)、匈牙利算法等。 - 几何问题: 凸包构建、最近点...

    CSU825DINGYI

    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仿真研讨一.rar

    《CSU模拟电子技术B仿真研讨一》的压缩包中包含了一系列的仿真案例和相关文档,旨在提升学生对模拟电子技术的理解和应用能力。它不仅要求学生掌握书本上的理论知识,而且更注重理论与实践的结合,让学生通过仿真软件...

    CSU88RP1185D+CS1239标准公版原理图额温枪公版原理图+PCB+封装库文件.zip

    《CSU88RP1185D与CS1239在额温枪设计中的应用及公版解析》 额温枪作为一种非接触式的体温测量设备,近年来因其便捷、安全的特点,在医疗和日常生活场景中得到了广泛应用。本资料包包含了CSU88RP1185D与CS1239在额温...

    C-Freev5.0特别版推荐支持多种编译器的专业化CC集成开发环境(IDE)附注册码

    C-Free是一款支持多种编译器的专业化C/C 集成开发环境(IDE)。利用本软件,使用者可以轻松地编辑、编译、连接、运行、调试C/C 程序。C-Free中集成了C/C 代码解析器,能够实时解析代码,并且在编写的过程中给出智能...

    Csu-85:正在寻找适用于 Mac OSX 的 crt0.o?

    #欢迎来到这个 OSX Csu-85 wiki! ##构建丢失的Mac“crt0.o”文件 您是否注意到简单地将 GNU 配置标志应用于静态链接可执行文件对于更复杂的软件包分发失败? 您是否编译过抱怨找不到 crt0.o 的代码? 你并不孤单。...

    阻尼最小二乘法matlab代码-CSU-ECE455:机器人编程与仿真简介

    在"CSU-ECE455-master"这个项目中,可能包含了实现阻尼最小二乘法的MATLAB源代码,包括定义模型、构建矩阵、设置阻尼因子、执行优化以及结果展示等部分。通过阅读和理解这些代码,你可以更深入地了解如何在实际的...

    CSU8ASM-IDE开发编译软件

    CSU8ASM-IDE是一款专为CSU8ASM汇编语言设计的集成开发环境(IDE),它集成了代码编辑、编译、调试等多种功能,旨在提高程序员的开发效率和代码质量。这款软件对于学习和使用CSU8ASM汇编语言的用户来说是一个不可或缺...

    csu-demos:Microsoft Guilds为CSU和客户提供的演示库

    项目此回购已使用初始模板填充,以帮助您入门。 请确保更新内容,以为社区建设创造良好的体验。 作为该项目的维护者,请进行一些更新: 改进此README.MD文件可提供出色的体验使用有关该项目的支持经验的内容更新...

    ux-research:存放有关CSU-F UX和UX Research简介的信息的地方

    在CSU-F(假设是某个大学的缩写)中,UX研究是一个重要的领域,旨在理解用户需求,提升产品的可用性、易用性和满意度。通过深入的UX研究,可以为设计决策提供数据支持,确保最终产品能够满足目标用户群体的实际需求...

Global site tag (gtag.js) - Google Analytics