图·c++

数据结构: 邻接矩阵,邻接表

1.图的存储方式:邻接矩阵,邻接表

1.稀疏图和稠密图

2.无向图:

n n n 个点,最多 n ( n − 1 ) / 2 n(n-1)/2 n(n1)/2 条边,
m m m 接近 n ( n − 1 ) / 2 n(n-1)/2 n(n1)/2 的时候是稠密图。
n = 1000 n=1000 n=1000 , 5050 5050 5050 条边, m = 10000 m=10000 m=10000 条边是稀疏图!
结论: 稀疏图用邻接表,稠密图用邻接矩阵。

3.有向图:

n n n 个点,最多 n ( n − 1 ) n(n-1) n(n1) 条边,
m m m 接近 n ( n − 1 ) n(n-1) n(n1) 的时候是稠密图。
n = 1000 n=1000 n=1000 ,最多 1000000 1000000 1000000 条边, m = 10000 m=10000 m=10000 条边,稀疏图!

2.节点的出度与入度:

有向图:

入度:

din[1]=0;
dout[1]=2;

出度:

din[4]=1;
dout[3]=2;

让我们来练习一下:

图的存储

题目描述

给定一个 n n n 个顶点 m m m 条边的无向图。请以邻接矩阵和邻接表的形式输出这一张图。

输入格式

第一行输入两个正整数 n n n m m m,表示图的顶点数和边数。

第二行开始,往后 m m m 行,每行输入两个以空格隔开的正整数 u , v u,v u,v,表示 u , v u,v u,v 顶点之间有一条边直接相连。

输出格式

首先输出 n n n n n n 列的矩阵,以空格隔开每一行之间的数表示邻接矩阵。第 i i i 行第 j j j 列的数为 1 1 1 则表示顶点 i , j i,j i,j 之间有一条边直接相连;若为 0 0 0 则表示没有直接相连的边。

再往后输出 n n n 行。第 i i i 行首先先输出一个整数 d i d_i di,表示这个顶点的度数,再按照从小到大的顺序,依次输出与顶点 i i i 直接相连的所有顶点。

样例 #1

样例输入 #1

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

样例输出 #1

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

提示

样例的图如图所示:

数据保证,对于所有数据, 1 ≤ n ≤ 1000 1 \leq n \leq 1000 1n1000 1 ≤ m ≤ 1 0 5 1 \leq m \leq 10^5 1m105,且图无重边无自环。

这道题要先构建一个邻接表,再去找谁能到谁那
构建邻接表代码如下:

for(int i=1;i<=m;i++)
{int x,y;scanf("%d%d",&x,&y);a[x][y]++;a[y][x]++;
}
for(int i=1;i<=n;i++)
{for(int j=1;j<=m;j++){printf("%d ",a[i][j]);}printf("\n");
}

查找代码如下:

for(int i=1;i<=n;i++)
{printf("%d ",v[i].size());sort(v[i].begin(),v[i].end());for(int j=0;j<v[i].size();j++){printf("%d ",v[i][j]);}printf("\n");
}

完整代码如下:

#include <bits/stdc++.h>
using namespace std;
const int N=1010,M=1e5+10;
vector<int> v[N];
int a[N][N];
int main()
{int n,m;cin>>n>>m;for(int i=1;i<=m;i++){int j,c;scanf("%d%d",&j,&c);a[j][c]=1;a[c][j]=1;v[j].push_back(c);v[c].push_back(j);}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){printf("%d ",a[i][j]);}printf("\n");}for(int i=1;i<=n;i++){printf("%d ",v[i].size());sort(v[i].begin(),v[i].end());for(int j=0;j<v[i].size();j++){printf("%d ",v[i][j]);}printf("\n");}return 0;
}

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

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

相关文章

【JVM】CPU飙高排查方案与思路

文章目录 CPU飙高排查方案与思路 CPU飙高排查方案与思路 1.使用top命令查看占用cpu的情况 2.通过top命令查看后&#xff0c;可以查看是哪一个进程占用cpu较高&#xff0c;上图所示的进程为&#xff1a;40940 3.查看进程中的线程信息 4.可以根据进程 id 找到有问题的线程&a…

积木报表集成前端加载js文件404

项目场景&#xff1a; 在集成积木报表和shiro时候&#xff1a; 集成积木报表&#xff0c;shrio&#xff0c;shrio是定义在另一个模块下的&#xff0c;供另一个启动类使用&#xff0c;积木报表集成shrio的时候&#xff0c;需要依赖存放shrio的核心包&#xff0c;该核心包除了存…

React构建的JS优化思路

背景 之前个人博客搭建时&#xff0c;发现页面加载要5s才能完成并显示 问题 React生成的JS有1.4M&#xff0c;对于个人博客服务器的带宽来说&#xff0c;压力较大&#xff0c;因此耗费了5S的时间 优化思路 解决React生成的JS大小&#xff0c;因为我用的是react-router-dom…

到 2030 年API 攻击预计将激增近 1000%

导读云原生应用程序编程接口管理公司 Kong 联合外部经济学家的最新研究预计&#xff0c;截至 2030 年 API 攻击将激增 996%&#xff0c;意味着与 API 相关的网络威胁的频率和强度都显着升级。 这项研究由 Kong 分析师和布朗大学副教授 Christopher Whaley 博士合作进行&#x…

webpack 热更新的实现原理

webpack 的热更新⼜称热替换&#xff08;Hot Module Replacement&#xff09;&#xff0c;缩写为HMR。这个机制可以做到不⽤刷新浏览器⽽将新变更的模块替换掉旧的模块。 原理&#xff1a; ⾸先要知道 server 端和 client 端都做了处理⼯作&#xff1a; 在 webpack 的 watch…

docker案例复现

$uri导致的CRLF注入漏洞 前期准备dockerdocker compose 漏洞配置 前期准备 docker 要完成这样的测试&#xff0c;需要我们有一定的环境&#xff0c;也就是需要大家去安装docker 更新系统软件包&#xff1a; sudo yum update 安装 Docker 的依赖软件包&#xff1a; sudo yum …

Ubuntu 20.04(服务器版)安装 Anaconda

0、Anaconda介绍 Anaconda是一个开源的Python发行版本&#xff0c;包含了包括Python、Conda、科学计算库等180多个科学包及其依赖项。因此&#xff0c;安装了Anaconda就不用再单独安装CUDA、Python等。 CUDA&#xff0c;在进行深度学习的时候&#xff0c;需要用到GPU&#xf…

百度云盘发展历程与影响

摘要&#xff1a; 百度云盘作为中国领先的云存储与共享服务提供商&#xff0c;自其创立至今经历了多个阶段的发展与变革。本论文通过对百度云盘的历史回顾与分析&#xff0c;探讨了其在技术、商业模式、用户体验以及对社会的影响等方面的演变。同时&#xff0c;还分析了在竞争激…

Easy Rules规则引擎(1-基础篇)

目录 一、序言二、Easy Rules介绍三、定义规则(Rules)1、规则介绍2、编程式规则定义3、声明式规则定义 四、定义事实(Facts)五、定义规则引擎(Rules Engine)1、规则引擎介绍2、InferenceRulesEngine规则引擎示例(1) 定义触发条件(2) 定义规则触发后的执行行为(3) 测试用例 一、…

79. 单词搜索

题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 解题思路&#xff1a;递归回溯 首先遍历每一个board中的字符&#xff0c;如果该字符合word的第一个字符相等&#xff0c;就从这个位置进行匹配搜索&#xff0c;如果能够找到word&…

DataGrip 安装 与 连接MySQL数据库

DataGrip 安装 与 连接MySQL数据库 Jetbrains是著名的编程工具商业软件提供商&#xff0c;旗下有很多软件。包括IDE、团队开发工具、插件和微软.Net辅助工具、包括自创语言Kotlin等。我们通常用的和说的全家桶&#xff0c;主要就是指它的IDE套件。Jetbrains的IDE工具都支持跨平…

【算法——双指针】LeetCode 283 移动零

题目描述&#xff1a; 思路&#xff1a; (双指针) O(n)O(n)O(n) 给定一个数组 nums&#xff0c;要求我们将所有的 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 如图所示&#xff0c;数组nums [0,1,0,3,12]&#xff0c;移动完成后变成nums [1,3,12,0,0] &am…

数据库信息速递 -- MariaDB 裁员后,前景不确定 (翻译)

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请加 liuaustin3微信号 &#xff0c;在新加的朋友会分到3群&#xff…

Jmeter设置中文的两种方式,建议使用第二种

方案一 进入jmeter图像化界面&#xff0c;选择Options下的Choose Language&#xff0c;再选择Chinese(Simplified)。这个就是选择语言为简体中文&#xff08;缺陷&#xff1a;这个只是在本次使用时为中文&#xff0c;下次打开默认还是英文的&#xff09; 方案二&#xff08;…

阿里云服务器是什么?阿里云服务器有什么优缺点?

阿里云服务器是什么&#xff1f;云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务&#xff0c;云服务器可以降低IT成本提升运维效率&#xff0c;免去企业或个人前期采购IT硬件的成本&#xff0c;阿里云服务器让用户像使用水、电、天然气等公共资源一样便捷、高效地使用服务器…

基于CentOS 7 部署社区版Haproxy

HAProxy是法国开发者 威利塔罗(Willy Tarreau) 在2000年使用C语言开发的一个开源软件&#xff0c;是一款具 备高并发(一万以上)、高性能的TCP和HTTP负载均衡器&#xff0c;支持基于cookie的持久性&#xff0c;自动故障切换&#xff0c;支 持正则表达式及web状态统计。 目录 1…

Mybatis三剑客(一)在springboot中自动生成Mybatis【generator】

1、pom.xml中新增plugin <plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.7</version><configuration><overwrite>true</overwrite><…

const和指针的结合

目录 易错知识点 const和指针的结合 const和一级指针的结合 正误转换 巧用技巧 const是否参与类型 const和二级指针的结合 正误转换 巧用技巧 温故知新 易错知识点 1、常量不能作为左值&#xff0c;防止直接修改常量的值 2、不能将常量的地址泄露给普通指针或普通引用…

k8s基础

k8s基础 文章目录 k8s基础一、k8s组件二、k8s组件作用1.master节点2.worker node节点 三、K8S创建Pod的工作流程&#xff1f;四、K8S资源对象1.Pod2.Pod控制器3.service && ingress 五、K8S资源配置信息六、K8s部署1.K8S二进制部署2.K8S kubeadm搭建 七、K8s网络八、K8…

大语言模型(LLM)与 Jupyter 连接起来了

现在&#xff0c;大语言模型&#xff08;LLM&#xff09;与 Jupyter 连接起来了&#xff01; 这主要归功于一个名叫 Jupyter AI 的项目&#xff0c;它是官方支持的 Project Jupyter 子项目。目前该项目已经完全开源&#xff0c;其连接的模型主要来自 AI21、Anthropic、AWS、Co…