首页 > 其他分享 >博 客 测 试 --> P3366【模板】最小生成树

博 客 测 试 --> P3366【模板】最小生成树

时间:2022-12-13 20:11:31浏览次数:36  
标签:le -- 样例 最小 int 该图 maxn P3366 模板

P3366【模板】最小生成树

题目描述

如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 orz

输入格式

第一行包含两个整数 N,M,表示该图共有 N 个结点和 M 条无向边。

接下来 M 行每行包含三个整数 Xi,Yi,Zi,表示有一条长度为 Zi 的无向边连接结点 Xi,Yi

输出格式

如果该图连通,则输出一个整数表示最小生成树的各边的长度之和。如果该图不连通则输出 orz

样例 #1

样例输入 #1

4 5
1 2 2
1 3 2
1 4 3
2 3 4
3 4 3

样例输出 #1

7

提示

数据规模:

对于 \(20\%\) 的数据,\(N\le 5\),\(M\le 20\)。

对于 \(40\%\) 的数据,\(N\le 50\),\(M\le 2500\)。

对于 \(70\%\) 的数据,\(N\le 500\),\(M\le 10^4\)。

对于 \(100\%\) 的数据:\(1\le N\le 5000\),\(1\le M\le 2\times 10^5\),\(1\le Z_i \le 10^4\)。

样例解释:

所以最小生成树的总边权为 \(2+2+3=7\)。

代码

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define maxn 5005
#define maxm 200005
#define INF 1e9
int n,m;
int mp[maxn][maxn];
int dis[maxn];
bool vis[maxn];
int ans;
void init()
{
	for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j)
			mp[i][j]=INF;
	for(int i=1;i<=n;++i)
		dis[i]=INF;
}
bool prim()
{
	vis[1]=1;
	for(int i=1;i<=n;++i)
		dis[i]=mp[1][i];
	int minpath,now=1;
	for(int i=2;i<=n;++i)
	{
		minpath=INF;
		for(int j=1;j<=n;++j)
			if(!vis[j]&&dis[j]<minpath)
			{
				minpath=dis[j];
				now=j;
			}
		if(minpath==INF)
			return false;
		ans+=minpath;
		vis[now]=1;
		for(int j=1;j<=n;j++)
			if(dis[j]>mp[now][j]) 
				dis[j]=mp[now][j];
	}
	return true;
}
int main()
{
    cin>>n>>m;
	init();
	int i;
	int u,v,w;
	for(i=1;i<=m;i++)
	{
		scanf("%d%d%d",&u,&v,&w);
		mp[u][v]=min(mp[u][v],w);
		mp[v][u]=min(mp[v][u],w);
	}
	if(!prim()) 
		cout<<"orz"<<endl;
	else 
		cout<<ans;
	return 0;
}

标签:le,--,样例,最小,int,该图,maxn,P3366,模板
From: https://www.cnblogs.com/WAinAll/p/16980186.html

相关文章

  • 1*5 句话月考游寄
    科:时间分配不恰当,导致失分都在简单题上,不过较之与以前的发挥有进步。数:烂,事实证明最后一大题拿全分无济于事,把会做的题做对才是难点!社:乐,一个月没背了居然还有86,甚至比期......
  • C# 反序列化,支持基本数据类型处理
    C#反序列化,支持基本数据类型处理代码///<summary>///优化对基本数据的支持///</summary>///<paramname="obj"></param>......
  • 配置BGP与IGP交互示例
    配置BGP和IGP的交互,可以丰富协议路由表。组网需求通信业务的发展,要求能够在广泛的区域实现互访,并且数据传输可靠,中断时间短,这就要求路由的传播区域广,收敛速度快。BGP可以......
  • 2190. 有源汇上下界最小流
    2190.有源汇上下界最小流和最大流差不多首先是判断可行吗最后要把起点和终点调换,然后减去#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongcon......
  • django 视图层
    简介:视图层三板斧详解,JsonResponse对象,request对象获取文件,FBV与CBV,CBV源码剖析目录视图层视图层三板斧详解JsonResponse对象request对象获取文件FBV与CBVFBVCBV源码剖析......
  • 在springboot使用jsp
    在springboot配置jsp环境在pom.xml中添加配置依赖内容如下:<dependency><groupId>org.springframework.boot</groupId><artifactId>sp......
  • 2022.12.13-代码大全-12月读后感1
    近期,我阅读了这本书的常见的软件隐喻这一部分,我了解到了许多常见的软件隐喻。软件中的写法:写作代码。许多的想法就是从写作这个隐喻衍生而来的。对于个人规模的工作乃至小......
  • django之路由分发,名称空间,虚拟环境,视图层之必备三板斧,JsonResponse对象,视图层之reques
    路由分发应用场景:1、Django的每一个应用都可以有自己的templates文件夹,urls.py、static文件夹,正是基于这个特点,Django能够非常好的做到分组开发(每个人只写自己的app),公......
  • Python 缩进语法的起源:上世纪 60-70 年代的大胆创意!
    上个月,Python之父GuidovanRossum在推特上转发了一篇文章《TheOriginsofPython》,引起了我的强烈兴趣。众所周知,Guido在1989年圣诞节期间开始创造Python,当时他......
  • linux删除文件后空间没有释放问题解决办法
    收到服务器报警,磁盘空间满了,删除一些日志和垃圾文件后发现磁盘空间变化不大,df查看磁盘占用已经没有那么多。想了下,应该是删除的文件还应该是没有被彻底释放导致。系统是......