当前位置: 首页 > news >正文

图论题目集一(代码 注解)

目录

题目一: 

题目二:

题目三:

题目四:

题目五:

题目六:

题目七:

题目一: 

#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
int g[15][15], vis[15] = { 0 };
int n, m;
queue<int> q;
void dfs(int k)//深度
{cout << k << " ";vis[k] = 1;for (int i = 0; i < n; i++){if (i == k)continue;if (vis[i] == 0 && g[k][i]){dfs(i);}}return;
}
void bfs(int k)//广度
{q.push(k);while (!q.empty()){k = q.front();q.pop();if(vis[k]==0){cout<<k<<" ";vis[k]=1;}for (int i = 0; i < n; i++){if (vis[i] == 0 && g[k][i] == 1){q.push(i);}}}return;
}
int main()
{cin >> n >> m;for (int i = 1; i <= m; i++)//构建邻接矩阵{int x, y;cin >> x >> y;g[x][y] = 1, g[y][x] = 1;}for (int i = 0; i < n; i++)//深度{if (vis[i] == 0){cout << "{ ";dfs(i);cout << "}" << endl;}}memset(vis, 0, sizeof(vis));for (int i = 0; i < n; i++)//广度{if(vis[i]==0){cout << "{ ";bfs(i);cout << "}" << endl;}}
}

 题目二:

#include<iostream>
#include<algorithm>
using namespace std;
int g[10005][10005];
float n, k;
typedef struct node
{int data;int w = 0;
}node;
void warshall()//传递闭包
{for (int k = 1; k <= n; k++)for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++){if (g[i][k] && g[k][j])//连通{if (i == j)continue;if (g[i][j] == 0 || g[i][j] > g[i][k] + g[k][j])//没有直接连通或者新通路距离小于之前通路g[i][j] = g[i][k] + g[k][j];}}
}
bool cmp(node a, node b)
{return a.w < b.w;
}
int main()
{cin >> n >> k;for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)g[i][j] = 0;for (int i = 0; i < k; i++)//无向图,初始距离都为1{int v1, v2;cin >> v1 >> v2;g[v1][v2] = 1;g[v2][v1] = 1;}warshall();/*for (int i = 1; i <= n; i++)//输出邻接矩阵{for (int j = 1; j <= n; j++)cout << g[i][j] << " ";cout << endl;}*/float ans[10005] ;for (int i = 1; i <= n; i++){ans[i] = 0;for (int j = 1; j <= n; j++){if (i == j)ans[i]++;if (g[i][j]>0 && g[i][j] <= 6)//符合条件ans[i]++;}}for (int i = 1; i <= n; i++)printf("%d:% .2f%%\n", i, ans[i] / n * 100);
}

题目三:

#include<iostream>
using namespace std;
int g[1010][1010];
int n,m,s;
int vis[1010];
int path[1010];
int cnt=0;
void dfs(int k)//深度
{//cout<<k<<" ";path[cnt++]=k;//记录去的路径vis[k]=1;for(int i=0;i<=n;i++){if(i==k)continue;if(vis[i]==0&&g[k][i]==1){dfs(i);path[cnt++]=k;//记录回的路径}}return ;
}
int main()
{cin>>n>>m>>s;for(int i=1;i<=m;i++)//构建邻接矩阵{int x,y;cin>>x>>y;g[x][y]=g[y][x]=1;}dfs(s);int flag=1;//标记是否可以遍历完所有for(int i=1;i<=n;i++)//查询是否遍历完所有{if(vis[i]==0){flag=0;break;}}if(flag==1)//输出序列{for(int i=0;i<cnt;i++){cout<<path[i];if(i!=cnt-1)cout<<" ";}}else{for(int i=0;i<cnt;i++)cout<<path[i]<<" ";cout<<0;}
}

题目四:

#include<iostream>
#include<queue>
#include<vector>
#include<cstring>
using namespace std;
typedef long long ll;
const ll N = 3e5 + 10, M = 1e6 + 10, inf = 1e14;
struct  node
{ll v, w;bool operator <(const node& y) const//重载一个<,用于优先队列排序{return w > y.w;//小到大}
};
int n, m, t;
priority_queue<node>q;
vector<node> e[N];
ll dis[N], vis[N];
void Dij(int t)
{dis[t] = 0;//从t号点出发,表示从t到t距离为0q.push({ t,dis[t] });//t号点以及到t的距离入队while (q.size()){int u = q.top().v;//取最小边相连的点出队q.pop();if (vis[u])//访问过则跳过continue;vis[u] = 1;//没访问赋为访问for (auto i : e[u])//遍历以u为出发点的边{int v = i.v, w = i.w;//取其相连的点及权值if (dis[v] > dis[u] + w)//经过u点到v点的权值小于之前的权值则更新{dis[v] = dis[u] + w;q.push({ v,dis[v] });//v点以及到v的距离}}}}
int main()
{cin >> n >> m;for (int i = 1; i <= m; i++){int x, y, w=1;cin >> x >> y;e[x].push_back({ y,w });//存入以x出发到y,权值为we[y].push_back({ x,w });//存入以x出发到y,权值为w}int N;cin >> N;while (N--){cin >> t;float ans = 0,sum=0;memset(dis, 0x3f3f3f, sizeof(dis));memset(vis, 0, sizeof(vis));Dij(t);//从t点出发for (int i = 1; i <= n; i++){sum += dis[i];//求和}//cout << sum;ans = (n - 1) /sum;printf("Cc(%d)=%.2f\n", t, ans);}
}

题目五:

#include<iostream>//并查集
using namespace std;
int fa[204], mp[102][102];
int find(int x)//查找
{if(fa[x]==x)  return x;return fa[x]=find(fa[x]);
}
void Merge(int x, int y)//合并
{int a=find(x), b=find(y);if(a==b) return;else fa[a]=fa[b];
}
int main()
{int n, m, k;cin>>n>>m>>k;int a, b, c;for(int i=1;i<=n;i++)//初始化fa[i]=i;for(int i=0; i<m; i++){cin>>a>>b>>c;mp[a][b]=c,mp[b][a]=c;if(c==1)//为朋友则合并,因为朋友的朋友也是朋友Merge(a, b);}for(int i=0; i<k; i++){cin>>a>>b;if(mp[a][b]==1) cout<<"No problem"<<endl;else if(mp[a][b]==-1)//是敌对关系{if(find(a)==find(b))    cout<<"OK but..."<<endl;//但是有相同的朋友,即在一个集合内else cout<<"No way"<<endl;}else cout<<"OK"<<endl;}return 0;
}

题目六:

#include<iostream>
using namespace std;
int n, m, mp[520][520], f[520];
void init() //初始化
{for (int i = 0; i < n; i++)f[i] = i;
}
int find(int x) //查询
{if (x == f[x]) return x;return f[x] = find(f[x]);
}
void merge(int x, int y)//合并 
{int xx = find(x);int yy = find(y);if (xx != yy) f[xx] = yy;return;
}
int sum()//统计连通块个数
{int cnt = 0;for (int i = 0; i < n; i++) //统计连通块个数 {if (i == find(i)) cnt++;}return cnt;
}
int main() 
{int a, b, k, x, cnt = 0, cnt2, flag = 0;cin >> n >> m;init();while (m--) {cin >> a >> b;mp[a][b] = 1;mp[b][a] = 1;merge(a, b);}cin >> k;cnt = sum();if (k == n) flag = 1; //要输出Game Over; while (k--) {cin >> x;init();cnt2 = 0;  //x去掉后的连通区域个数 for (int i = 0; i < n; i++) mp[x][i] = mp[i][x] = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++){if (mp[i][j]) merge(i, j);}}cnt2 = sum();if (cnt2 < cnt + 2) cout << "City " << x << " is lost." << endl;else cout << "Red Alert: City " << x << " is lost!" << endl;//1、去掉i点后,一个连通块至少被分为两个,增加了一个cnt = cnt2;                                                 //2、去掉i点后,再次统计cnt2时,就会把去掉的点i也加上,所以要大于cnt+1}if (flag) cout << "Game Over." << endl;
}

题目七:

#include<iostream>
#include<queue>
using namespace std;
int n, id, fa, ma, k;
int f[10100], peo[10100], avgs[10100], avga[10100],st[10100];
struct node
{int a, b;
}e[10100];
struct family
{int id, peo, avgs, avga;bool operator<(const family& x)const{if (x.peo * avga == peo * x.avga)//人均相等,则升序排序return id > x.id;return x.peo * avga < peo * x.avga;//人均多的在前}
};
int find(int x)//查找
{if (f[x] == x) return x;return f[x] = find(f[x]);
}
void meger(int x, int y)//合并
{x = find(x), y = find(y);if (x != y){f[max(x, y)] = min(x, y);//小号id的设为父亲peo[min(x, y)] += peo[max(x, y)];//家庭人数加到小号idavgs[min(x, y)] += avgs[max(x, y)];//房屋数量加到小号idavga[min(x, y)] += avga[max(x, y)];//服务面积加到小号面积}
}
int main()
{for (int i = 0; i < 10100; i++) f[i] = i, peo[i] = 1;//初始化,每个父亲节点是自己,自己家庭都有一个自己cin >> n;int count = 0;for (int i = 1; i <= n; i++){cin >> id >> fa >> ma >> k;if (fa != -1) e[count++] = { id,fa };//存关系if (ma != -1) e[count++] = { id,ma };//存关系st[id] = 1;//存在这个人int kid;for (int j = 1; j <= k; j++){cin >> kid;e[count++] = { id,kid };//存关系}cin >> avgs[id] >> avga[id];}for (int i = 0; i < count; i++)//合并家庭{int a = e[i].a, b = e[i].b;st[a] = st[b] = 1;meger(a, b);//合并二者为一个家庭}priority_queue<family>ans;//优先队列for (int i = 0; i < 10100; i++){if (st[i] && f[i] == i)//这个人存在且父亲节点是自己ans.push({ i,peo[i],avgs[i],avga[i] });}//count << st[8888] << f[8888];cout << ans.size() << endl;while (!ans.empty()){family t = ans.top();ans.pop();printf("%04d %d %.3lf %.3lf\n", t.id, t.peo, (double)t.avgs / t.peo, (double)t.avga / t.peo);}
}

相关文章:

图论题目集一(代码 注解)

目录 题目一&#xff1a; 题目二&#xff1a; 题目三&#xff1a; 题目四&#xff1a; 题目五&#xff1a; 题目六&#xff1a; 题目七&#xff1a; 题目一&#xff1a; #include<iostream> #include<queue> #include<cstring> using namespace st…...

解释MVC和MVVM架构模式

一、解释MVC和MVVM架构模式 MVC和MVVM都是常见的前端架构模式&#xff0c;用于抽象分离并解决特定问题。这两种模式在结构上具有一定的相似性&#xff0c;但在细节和数据处理方式上存在一些差异。 MVC&#xff0c;即Model-View-Controller&#xff0c;是一种用于应用程序分层…...

OLLAMA:如何像云端一样运行本地大语言模型

简介&#xff1a;揭开 OLLAMA 本地大语言模型的神秘面纱 您是否曾发现自己被云端语言模型的网络所缠绕&#xff0c;渴望获得更本地化、更具成本效益的解决方案&#xff1f;那么&#xff0c;您的探索到此结束。欢迎来到 OLLAMA 的世界&#xff0c;这个平台将彻底改变我们与大型…...

React全家桶及原理解析-lesson4-Redux

lesson4-react全家桶及原理解析.mov React全家桶及原理解析 React全家桶及原理解析 课堂⽬标资源起步Reducer 什么是reducer什么是reduceRedux 上⼿ 安装reduxredux上⼿检查点react-redux 异步代码抽取Redux拓展 redux原理 核⼼实现中间件实现redux-thunk原理react-redux原理 实…...

电商api数据接口技术开发来赞达lazada通过商品ID抓取商品详情信息item_get请求key接入演示

要获取Lazada的商品详情&#xff0c;你需要使用item_get请求。首先&#xff0c;你需要注册一个开发者账号并获取API密钥&#xff08;App Key和App Secret&#xff09;。然后&#xff0c;你可以使用以下Python代码示例来获取商品详情&#xff1a; # coding:utf-8 ""&…...

零基础入门多媒体音频(2)-音频焦点2

说实话&#xff0c;android的代码是越来越难以阅读。业务函数里面狗皮膏药似的补丁与日俱增。继上篇简要介绍音频焦点的文章&#xff0c;这篇文章的主要内容是分析audiofocus的实现。看了一下午的相关代码都没找到做audiofocus策略的核心逻辑。目前能看懂的大概包含下面两个逻辑…...

Spark杂谈

文章目录 什么是Spark对比HadoopSpark应用场景Spark数据处理流程什么是RDDSpark架构相关进程入门案例&#xff1a;统计单词数量Spark开启historyServer 什么是Spark Spark是一个用于大规模数据处理的统一计算引擎Spark一个重要的特性就是基于内存计算&#xff0c;从而它的速度…...

【PyTorch】进阶学习:一文详细介绍 torch.save() 的应用场景、实战代码示例

【PyTorch】进阶学习&#xff1a;一文详细介绍 torch.save() 的应用场景、实战代码示例 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程…...

私域流量运营的关键要素和基本步骤

解锁增长的四大关键&#xff1a; 关键要素一&#xff1a;精准营销 精准营销是私域流量运营的核心所在。通过精细化运营和个性化服务&#xff0c;企业可以将普通用户转化为忠实粉丝&#xff0c;提高用户的粘性和转化率。采用数据驱动的精准营销策略&#xff0c;深度挖掘用户需求…...

k8s部署hadoop

&#xff08;作者&#xff1a;陈玓玏&#xff09; 配置和模板参考helm仓库&#xff1a;https://artifacthub.io/packages/helm/apache-hadoop-helm/hadoop 先通过以下命令生成yaml文件&#xff1a; helm template hadoop pfisterer-hadoop/hadoop > hadoop.yaml用kube…...

deepspeed分布式训练在pytorch 扩展(PyTorch extensions)卡住

错误展示&#xff1a; Using /root/.cache/torch_extensions/py310_cu121 as PyTorch extensions root...
 Using /root/.cache/torch_extensions/py310_cu121 as PyTorch extensions root...
 错误表现&#xff1a; 出现在多卡训练过程的pytorch 扩展&#xff0c;deepspee…...

Rust 的 HashMap

在 Rust 中&#xff0c;HashMap 是一个从键&#xff08;key&#xff09;映射到值&#xff08;value&#xff09;的数据结构。它允许你以 O(1) 的平均时间复杂度存储、检索和删除键值对。HashMap 实现了 std::collections::HashMap 结构体&#xff0c;通常通过 use std::collect…...

exporter方式监控达梦数据库

蓝鲸监控 随着国产化和信创的深入&#xff0c;开始普遍使用国产化数据库–如达梦数据库&#xff0c;蓝鲸平台默认没有对其进行监控&#xff0c;但是平台了提供监控告警的能力。比如脚本采集&#xff0c;脚本的是一种灵活和快速的监控采集方式&#xff0c;不同层的监控对象都可…...

供应链安全之被忽略的软件质量管理平台安全

背景 随着我国信息化进程加速&#xff0c;网络安全问题更加凸显。关键信息基础设施和企业单位在满足等保合规的基础上&#xff0c;如何提升网络安全防御能力&#xff0c;降低安全事件发生概率&#xff1f;默安玄甲实验室针对SonarQube供应链安全事件进行分析&#xff0c;强调供…...

python入门(二)

python的安装很方便&#xff0c;我们这里就不再进行讲解&#xff0c;大家可以自己去搜索视频。下面分享一下Python的入门知识点。 执行命令的方式 在安装好python后&#xff0c;有两种方式可以执行命令&#xff1a; 命令行程序文件&#xff0c;后缀名为.py 对于命令行&…...

Mysql,MongoDB,Redis的横纵向对比

一,什么是Mysql Mysql是一款安全,可以跨平台,高效率的数据库系统,运行速度高,安全性能高,支持面向对象,安全性高,并且成本比较低,支持各种开发语言,数据库的存储容量大,有许多的内置函数。 二,什么是MongoDB MongoDB是基于分布式文件存储的数据库,是一个介于关…...

css3 实现html样式蛇形布局

文章目录 1. 实现效果2. 实现代码 1. 实现效果 2. 实现代码 <template><div class"body"><div class"title">CSS3实现蛇形布局</div><div class"list"><div class"item" v-for"(item, index) …...

基于消失点的相机自标定

基于消失点的相机自标定 附赠最强自动驾驶学习资料&#xff1a;直达链接 相机是通过透视投影变换来将3D场景转换为2D图像。在射影变换中&#xff0c;平行线相交于一点称之为消失点。本文详细介绍了两种利用消失点特性的标定方法。目的是为根据实际应用和初始条件选择合适的标…...

Python:filter过滤器

filter() 是 Python 中的一个内置函数&#xff0c;用于过滤序列&#xff0c;过滤掉不符合条件的元素&#xff0c;返回由符合条件元素组成的新列表。该函数接收两个参数&#xff0c;一个是函数&#xff0c;一个是序列&#xff0c;序列的每个元素作为参数传递给函数进行判定&…...

Python函数学习

Python函数学习 1.函数定义 在函数定义阶段只检查函数的语法问题 2.实参形参 ​​​​总结&#xff1a; &#xff08;1&#xff09;位置参数就是经常用的按照位置顺序给出实参的值&#xff1b; &#xff08;2&#xff09;关键字实参形式&#xff1a;key123&#xff1b;放在…...

IDEA中的Project工程、Module模块的概念及创建导入

1、IDEA中的层级关系&#xff1a; project(工程) - module(模块) - package(包) - class(类)/接口具体的&#xff1a; 一个project中可以创建多个module一个module中可以创建多个package一个package中可以创建多个class/接口2、Project和Module的概念&#xff1a; 在 IntelliJ …...

如何快速下载并剪辑B站视频

1、B站手机端右上角缓存视频&#xff1b; 2、在手机文件管理助手中找到android/data/80找到两个文件&#xff0c;video.m4s和audio.m4s&#xff0c;将它们发送到电脑&#xff0c;系统会默认保存在你的个人文件夹里&#xff0c;C:\users\用户名 3、下载ffmepg https://blog.cs…...

智慧矿山新趋势:大数据解决方案一览

1. 背景 随着信息技术的快速发展和矿山管理需求的日益迫切&#xff0c;智慧矿山作为一种创新的矿山管理方式应运而生。智慧矿山借助先进的信息技术&#xff0c;实现对矿山生产、管理、安全等各方面的智能化、高效化、协同化&#xff0c;是矿山行业转型升级的必然趋势。 欢迎关…...

Ubuntu使用Docker部署Nginx容器并结合内网穿透实现公网访问本地服务

目录 ⛳️推荐 1. 安装Docker 2. 使用Docker拉取Nginx镜像 3. 创建并启动Nginx容器 4. 本地连接测试 5. 公网远程访问本地Nginx 5.1 内网穿透工具安装 5.2 创建远程连接公网地址 5.3 使用固定公网地址远程访问 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#…...

面试笔记——Redis(使用场景、面临问题、缓存穿透)

Redis的使用场景 Redis&#xff08;Remote Dictionary Server&#xff09;是一个内存数据结构存储系统&#xff0c;它以快速、高效的特性闻名&#xff0c;并且它支持多种数据结构&#xff0c;包括字符串、哈希表、列表、集合、有序集合等。它主要用于以下场景&#xff1a; 缓…...

电机学(笔记一)

磁极对数p&#xff1a; 直流电机的磁极对数是指电机定子的磁极对数&#xff0c;也等于电机电刷的对数。它与电机的转速和扭矩有直接关系。一般来说&#xff0c;极对数越多&#xff0c;电机转速越低&#xff0c;扭矩越大&#xff0c;适用于低速、高扭矩的场合&#xff1b;相反&…...

数值分析复习:Newton插值

文章目录 牛顿&#xff08;Newton&#xff09;插值引入背景插值条件基函数插值多项式差商差商的基本性质差商估计差商的Leibniz公式 余项估计 本篇文章适合个人复习翻阅&#xff0c;不建议新手入门使用 牛顿&#xff08;Newton&#xff09;插值 引入背景 Lagrange插值每引入一…...

金融知识分享系列之:出场信号RSI指标

金融知识分享系列之&#xff1a;出场信号RSI指标 一、出场信号RSI指标二、RSI指标原理三、 指标用法四、RSI指标总结 一、出场信号RSI指标 名称&#xff1a;相对强弱指标参数&#xff1a;(默认14)组成&#xff1a;RSI线以及30轴、50轴、70轴构成 0-30是极弱&#xff1a;0-30的…...

基于Spring Boot的宿舍管理系统

摘 要 随着信息时代的来临&#xff0c;过去的传统管理方式缺点逐渐暴露&#xff0c;对过去的传统管理方式的缺点进行分析&#xff0c;采取计算机方式构建宿舍管理系统。本文通过课题背景、课题目的及意义相关技术&#xff0c;提出了一种楼宇信息、宿舍信息、宿舍安排、缺勤信息…...

全量知识系统“全基因序列”程序构想及SmartChat的回复

感觉上&#xff0c;全量知识系统的程序起点基本确定。下一步就是程序了。程序的整个设计过程都准备同时使用两个AI工具。以下是和“百度AI”同步进行的Q&A。 Q1. 基本假设&#xff1a;“全基因序列”中“基因”的本质是联结collection。 做法是&#xff1a; 对给出的一个…...

网站顶级栏目403/廊坊网站seo

本人是个智能家居爱好者&#xff0c;从入坑智能家居以来&#xff0c;已经有大约60个设备&#xff0c;手动智能大约50个&#xff0c;智能联动约50个。在创建这些智能的时候&#xff0c;发现能记录某个状态的状态记录器非常有用&#xff0c;比如某些灯光智能&#xff0c;只需晚上…...

做网站需要买域名吗/西安网站搭建公司

大意&#xff1a;给定一个无向图&#xff0c;问是否存在一条边使得删去该边后&#xff0c;使得该边左、右的双联通分量的权值的差值尽量小。 思路&#xff1a;求得双连通分量后&#xff0c;把原图缩成了一棵树&#xff0c;然后再树上做DP即可&#xff0c;求ans min(ans, (sum-…...

关于进一步加强网站建设/网络软营销

SetCommMask 用途&#xff1a;设置串口通信事件 原型&#xff1a;BOOL SetCommMask(HANDLE hFile, //标识通信端口的句柄 DWORD dwEvtMask //能够使能的通信事件 ); 参数说明&#xff1a;-hFile&#xff1a;串口句柄 -dwEvtMask&#xff1a;准备监视的串口事件掩码 串口上可能…...

用响应式做旧书网站/百度关键词seo排名优化

Ubuntu 20.04.4 Server 图文安装[含磁盘分区]引言安装环境VMware自定义硬件配置Ubuntu Server 安装步骤Reference引言 因个人需要部署 Ubuntu Server 20.04 LTS &#xff0c;小版本用的是最新的20.04.4。因为前期每太留意空间大小&#xff0c;使用的默认20G&#xff0c;安装过…...

广州官网优化/专业优化网站排名

要脱单&#xff0c;你就在公司里这些岗位上下功夫&#xff0c;身边的女生有主了&#xff0c;人家还有闺蜜呢不是&#xff0c;伺候好了说不定哪天就给你介绍一个&#xff0c;接下来不妨从身边的这些女生下手~~~~转载于:https://blog.51cto.com/13457136/2130036...

利用高权重网站做关键词/今天新闻联播

preg_replace字符替换例子这里介绍三种常用方法.代码如下方法一&#xff1a;$1",$txt);?>方法二&#xff1a;$1",$txt);?>方法三&#xff1a;$1",$txt);?>三种方法都返回同样结果.. PHP中的Perl风格正则与Perl完全一样.连quotemeta也是通用的..str_…...