0412备战蓝桥杯,图论复习

1.朴素dijkstra

#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<cmath>using namespace std;
const int N = 510; int n,m;
int g[N][N],dist[N];
bool st[N];int dij(){memset(dist,0x3f,sizeof dist);dist[1] = 0;for(int i=0;i<n;i++){//n次迭代 int t = -1;for(int j=1;j<=n;j++)if(!st[j] && (t == -1 || dist[j] < dist[t])) t=j;st[t] = true;for(int j=1;j<=n;j++){dist[j] = min(dist[j],dist[t]+g[t][j]);} }if(dist[n] == 0x3f3f3f3f) return -1;return dist[n];
}
int main()
{cin>>n>>m;memset(g,0x3f,sizeof g);for(int i=0;i<m;i++){int a,b,c;scanf("%d%d%d",&a,&b,&c);g[a][b] = min(g[a][b],c);}int t = dij();cout<<t<<endl;return 0;
}

2.floyd:初始化自己到自己是0

#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<cmath>using namespace std;
const int N = 210; int n,m,k;
int e[N][N];
int st[N];void floyd(){for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){e[i][j] = min(e[i][j],e[i][k]+e[k][j]);}}}return ;
}int main(){cin>>n>>m>>k;//memset(e,0x3f,sizeof e);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i==j) e[i][j] = 0;else e[i][j] = 0x3f3f3f3f;}}while(m--){int a,b,c;cin>>a>>b>>c;e[a][b] = min(e[a][b],c);}floyd();while(k--){int x,y;cin>>x>>y;if(e[x][y] > 0x3f3f3f3f/2) cout<<"impossible"<<endl;else cout<<e[x][y]<<endl;}return 0;
} 

3.prim:点到集合的距离

#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<cmath>using namespace std;
const int N = 510; int e[N][N];
int st[N];
int dist[N];//点到集合的距离 
int n,m;
int res;
int cnt;int prim(){memset(dist,0x3f,sizeof dist);for(int i=0;i<n;i++)//n次迭代{int t=-1;for(int j=1;j<=n;j++){if(!st[j] && (t==-1 || dist[j]<dist[t])){t=j;}}if(i && dist[t] == 0x3f3f3f3f){return 0x3f3f3f3f;//一定要返回无穷大1,不然-1也有可能是答案}if(i) res+=dist[t];st[t] = true;/*	st[t] = true;cnt++;res+=dist[t];*/for(int j=1;j<=n;j++){//用t更新点到集合的距离dist[j] = min(dist[j], e[t][j]); }} return res;
}
int main()
{cin>>n>>m;memset(e,0x3f,sizeof e);while(m--){int u,v,w;cin>>u>>v>>w;if(u==v) continue;e[u][v] = e[v][u] = min(e[v][u],w);}	if(prim() == 0x3f3f3f3f) cout<<"impossible"<<endl;else cout<<prim()<<endl;return 0;
} 

4.kruskal:选取最小边进入集合,注意并查集p[x] = find(p[x])

#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<cmath>using namespace std;
const int N = 200010; 
//kruskal从最短边加入集合
int p[N];
int n,m;
struct node{int u,v,w;
}; 
node e[N];
int res,cnt;bool cmp(node aa,node bb){return aa.w < bb.w;
}int find(int x){if(p[x] != x) p[x] = find(p[x]);return p[x];
}int main()
{cin>>n>>m;for(int i=1;i<=n;i++) p[i]=i;for(int i=1;i<=m;i++){int u,v,w;//	if(u==v) continue;cin>>u>>v>>w;e[i] = {u,v,w};}	sort(e+1,e+m+1,cmp);//枚举每条边 for(int i=1;i<=m;i++){int u=e[i].u;int v=e[i].v;int w=e[i].w;u=find(u);v=find(v);if(u!=v){//如果不在一个连通块res += w;cnt++;p[u] = v;//加入集合 } }if(cnt<n-1) cout<<"impossible"<<endl;else cout<<res<<endl; return 0;
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/811182.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内存函数memcpy、mommove、memset、memcmp

1、memcpy函数 描述&#xff1a; C 库函数 void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 复制 n 个字节到存储区 str1。 声明&#xff1a; void *memcpy(void *str1, const void *str2, size_t n)参数&#xff1a; str1 -- 指向用于存储复制内容的目标…

【Redis实战避坑指南】深入剖析缓存雪崩、缓存穿透与缓存击穿:理解原理,规避风险

Redis作为高性能的键值存储系统&#xff0c;因其出色的读写性能和内存数据结构&#xff0c;被广泛应用于缓存场景。然而&#xff0c;在实际使用过程中&#xff0c;如果不妥善处理&#xff0c;可能会遭遇缓存雪崩、缓存穿透与缓存击穿等现象&#xff0c;严重影响系统的稳定性和性…

【电控笔记0】稳定度判断

简要概括 现控:原理虚轴,稳定度越高 自控:相位裕度PM 增益裕度GM 开环传函 不稳定条件判断

期望阻抗(Zd/s或Yd*s)的nyquist、bode与rlocus

在机器人控制领域中&#xff0c;针对具体的阻抗参数特性&#xff08;如质量、阻尼和刚度&#xff09;&#xff0c;Nyquist图、Bode图和根轨迹&#xff08;rlocus&#xff09;可以提供深入的分析和设计工具。 Nyquist图&#xff1a; 应用于阻抗参数&#xff1a;在机器人控制中&…

股票战法课程之交易系统

文章目录 1. 为什么要建立自己的交易系统2. 一个朋友的交易体系分享2.1 开仓原则2.2 计算盈亏比2.3 第三原则&#xff1a;资金管理原则2.4 持股原则2.5 技术指标 3. 作者本人的交易系统 1. 为什么要建立自己的交易系统 有稳定的交易系统&#xff0c;会让人很清晰的 知道什么样…

docker pull镜像的时候指定arm平台

指定arm平台 x86平台下载arm平台的镜像包 以mysql镜像为例 docker pull --platform linux/arm64 mysqldocker images查看镜像信息 要查看Docker镜像的信息&#xff0c;可以使用docker inspect命令。这个命令会返回镜像的详细信息&#xff0c;包括其元数据和配置。 docker i…

Nginx反向代理到访问者机器上(后端调试)

一、起因 因一名后端开发&#xff0c;不想使用postman等工具进行接口调试&#xff0c;因为web系统需要经过N多步骤的前置动作&#xff0c;不能保证参数的有效性&#xff0c;因此&#xff0c;需要直接点击web系统&#xff0c;触发本地后端代码。 但是&#xff0c;总不可能动不动…

Fast-lio2运行时如何显示轨迹线

修改对应设备的.yaml文件&#xff0c;以velodyne为例&#xff1a; 将 path_en参数改为true即可&#xff0c;运行其他设备&#xff0c;修改对应的参数

四、SpringBoot3 整合 Druid 数据源

本章概要 创建程序引入依赖启动类配置文件编写编写 Controller启动测试问题解决 4.1 创建程序 4.2 引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://ww…

【C++ STL序列容器】deque 双端队列

文章目录 【 1. 基本原理 】【 1. deque 的创建 】1.1 创建一个空的 deque1.2 创建一个 n 个默认值的 deque1.3 创建一个 n 个指定值的 deque1.4 通过一个 deque 初始化另一个 deque1.5 通过基础容器来初始化 queue 容器适配器 【 3. deque 支持的成员函数 】 【 1. 基本原理 】…

不惑之年,反思我如何成为一个程序员

不惑之年&#xff0c;反思我如何成为一个程序员 文章目录 不惑之年&#xff0c;反思我如何成为一个程序员01/偶然掉入码河02/现实撕碎理想03/发展选择方向04/时代成就向往05/幸运装饰未来 在这个充满生机与希望的季节&#xff0c;博主有幸收到一家国企邀约面试&#xff0c;并顺…

通俗易懂HTTP和HTTPS区别

HTTP&#xff1a;超文本传输协议&#xff0c;它是使用一种明文的方式发送我们的内容&#xff0c;没有任何的加密&#xff0c;例如我们要在网页上输入账号密码&#xff0c;如果使用HTTP协议&#xff0c;账号密码就可能会被暴露&#xff0c;默认端口是80. HTTPS&#xff1a;是HT…

护眼台灯品牌哪个好?2024五大护眼台灯排行榜分享

​护眼台灯作为家庭中常见的照明工具&#xff0c;其存在几乎成为了现代生活的标配。家长们往往会为孩子购置一台&#xff0c;供学习和阅读使用&#xff1b;同时&#xff0c;它也是学生和办公人员在夜晚工作学习的必备之物。然而&#xff0c;市面上的一些普通台灯可能存在着种种…

Springboot使用教程

二、配置文件 SpringBoot使用一个全局的配置文件&#xff0c;配置文件名是固定的&#xff1b; •application.properties •application.yml 1.配置文件的作用&#xff1a; 修改SpringBoot自动配置的默认值&#xff1b;SpringBoot在底层都给我们自动配置好&#xff1b; Y…

redis分桶路由方案及代码(项目功能模拟)

项目背景&#xff1a;把黑白名单数据&#xff0c;通过hash分桶路由的方式存储在redis里面 项目为短信发送平台&#xff0c;以下是黑白名单相关介绍&#xff1a; 黑名单包括三类&#xff1a; 第一类&#xff0c;平台黑名单 此类是指的平台设置的黑名单手机号&#xff0c;设置了以…

OpenHarmony的C/C++三方库的适配

简介 本仓库主要用于存放已经适配OpenHarmony的C/C三方库的适配脚本和OpenHarmony三方库适配指导文档、三方库适配相关的工具。 三方库适配 本仓库的三方库主要是通过OpenHarmony SDK进行交叉编译适配的&#xff0c;并集成到应用端进行使用。 在使用OpenHarmony的SDK进行交…

智能合约:未来数字经济的基石

智能合约是一种自动执行交易的计算机协议&#xff0c;它以代码形式规定了交易双方的权利和义务&#xff0c;具有高度的可靠性和安全性。随着数字经济的发展&#xff0c;智能合约的重要性日益凸显&#xff0c;将成为未来数字经济的基石。 首先&#xff0c;智能合约在金融领域的应…

Java常见API

Java常见API Math 在Java中&#xff0c;Math是一个包含了许多数学函数和常量的类&#xff0c;它属于java.lang包&#xff0c;因此在使用时不需要显式地导入。Math类提供了许多静态方法来进行数学运算&#xff0c;比如三角函数、对数函数、指数函数等。 Math类的作用&#xf…

【目标检测数据集】城市街道垃圾堆相关数据集

一、GarbageOverflow&#xff1a;城市街道垃圾堆数据集 该垃圾堆数据集是通过爬虫从网上进行爬取得到的&#xff0c;一共包含1188张图片&#xff0c;有2个类别&#xff0c;分别为[overflow, No Overflow]&#xff0c;两个标签的数量分别为1734个标签和414个标签。部分数据集及…

23年坚守,只为打造高品质立秀膨体,索康让品质为中国说话

2024年3月23日&#xff0c;第二十三届上海国际整形美容外科大会&#xff08;以下简称“大会”&#xff09;在上海召开&#xff0c;本次大会由张涤生整形外科发展基金会主办&#xff0c;上海交通大学附属第九人民医院整复外科、Chinese Journal of Plastic and Reconstructive S…