代码随想录图论第五天|841.钥匙和房间一、841.钥匙和房间题目链接:https://leetcode.cn/problems/keys-and-rooms/思路:钥匙就是索引,遍历过就标记,每拿到一个房间的钥匙,直接for循环递归遍历,深度优先直接拿下。classSolution{publicbooleancanVisitAllRooms(ListListInteger>>rooms){boolean[]visited=newboolean[rooms.size()];dfs(visited,rooms,0);for(booleanb:visited){if(b==false)return
文/EmmaZ1950年,图灵发表了具有里程碑意义的论文《计算机器与智能》(ComputingMachineryandIntelligence),提出了一个关于机器人的著名判断原则——图灵测试,也被称为图灵判断,它指出如果第三者无法辨别人类与AI机器反应的差别,则可以论断该机器具备人工智能。2008年,漫威《钢铁侠》中的AI管家贾维斯,让人们知道了AI是如何精准地帮助人类(托尼)解决丢过来的各种事务的……图1:AI管家贾维斯(图片来源网络)2023年初,以2C的方式从科技界火爆破圈的免费聊天机器人ChatGPT浪翻全球。据瑞银的研报,其月活用户在1月份就达到了1亿,目前还在增长着,它已成为史上
写在前面:本篇主要内容:强连通分量等概念Tarjan算法的过程与实现强连通分量等概念:首先我们要明白上面是连通。连通:在一张图中任意两个点能互相到达。(举个例子)所以我们称上面的这个图是一个连通图! 接着我们在来理解什么是强连通。强连通:若一张有向图的节点两两互相可达,则称这张图是 强连通的。和连通图的唯一不同就是连通图是无向图,而强连通是有向图。(再来个栗子) 那明白了强连通,再看看什么是强连通分量。强连通分量:首先一张图很可能不是强连通图,但是它的子图可能是强强连通图,那我们称该子图是原图的强连通分量。(额。。。再给给栗子)例如上的图被框起来的每一个子图就是原图(整张图)的强连通分量! o
将所有点分成两个集合,使得所有边只出现在集合之间,就是二分图二分图:一定不含有奇数个点数的环;可能包含长度为偶数的环,不一定是连通图染色可以使用1和2区分不同颜色,用0表示未染色遍历所有点,每次将未染色的点进行dfs,默认染成1或者2由于某个点染色成功不代表整个图就是二分图,因此只有某个点染色失败就能立刻break/return染色失败相当于存在相邻的2个点染了相同的颜色,即点的个数的奇数个染色法判定二分图:#include#includeusingnamespacestd;constintN=1e5+10,M=2e5+10;//由于是无向图,顶点数最大是N,那么边数M最大是顶点数的2倍int
2.概念与计算2.1图的定义2.1.1定义图(graph)GGG是一个有序的三元组,记作G=G=G=V(G),E(G),ψ(G)>。V(G)V(G)V(G)是顶点集。E(G)E(G)E(G)是边集。ψ(G)\psi(G)ψ(G)是关联函数。例如ψG(e)=vivj\psi_G(e)=v_iv_jψG(e)=vivj。NG(v)N_G(v)NG(v)表示点vvv的一阶邻域点。相邻:与同一个顶点关联的两条边是相邻的。环:两个端点重合的边称为环。连杆:端点不重合的边成为连杆。kkk重边:连接同一对顶点的kkk条边。单边:一对顶点之间只有一条边。简单图:无环无重边2.1.2度度:与顶点vvv关
文章目录A.日期统计B.01串的熵C.冶炼金属D.飞机降落E.接龙数列F.岛屿个数G.子串简写H.整数删除I.景区导游J.砍树今年比去年难好多==Update2023.4.10反转了,炼金二分没写错,可以AC了Update2023.4.9rnm退钱,把简单的都放后面是吧。在C语言网测了一下民间数据,地址在这里。果然,二分写错了0分qwq,更新一个正确做法。飞机场不知道为什么也T了(很对的时间复杂度啊)。最后再更新一下J题把,这个题就是一个最简单的树上差分题。A.日期统计直接8个for,然后剪枝一下(只取2023)开头的,跑起来还是很快的,自己电脑100ms,机房1s左右我算的答案是235,不一
title:2022年辽宁省大学生程序设计竞赛date:2022-10-25tags:ACM,练习记录author:Linno2022年辽宁省大学生程序设计竞赛题目链接:https://ac.nowcoder.com/acm/contest/43937进度:10/13质量比较差的场,后三题是错的,D题spj也是错的,其他nt题也多。文章目录2022年辽宁省大学生程序设计竞赛A-伟大奋斗B-可莉的五子棋C-消除死域点D-七圣召唤E-病毒危机F-互质G-栈与公约数I-图的分割K-俄罗斯方块M-画画A-伟大奋斗#includeusingnamespacestd;signedmain(){ intn;
最小生成树一、简介二、Prim算法三、Kruskal算法四、小结一、简介最小生成树就是将n个顶点,n-1条边,通过一个连接起来,且使权值最小的一种结构。换句话来说,就是给定一个无向图,在图中选择若干条边把图中的所有节点连接起来,要求边长之和最小。在图论中,叫做求最小生成树。主要的应用:比如要在n个城市之间铺设光缆,使得这n个城市的任意两个之间都可以通信,但铺设光缆的费用很高,且各个城市之间铺设光缆的费用不同,所以我们的目标要使铺设光缆的总费用最低。这就需要找到带权的最小生成树。主要算法有Prim算法和Kruskal算法。下面通过一道Acwing上的一道最小生成树例题来分别简单介绍这两种算法。二
目录1.邻接矩阵2.邻接表3.十字链表4.邻接多重表5.边集数组1.邻接矩阵图的邻接矩阵存储方式是用两个数组来表示图。一个一维数组V存储图中顶点信息,一个二维数组(称为邻接矩阵)A存储图中的边或弧的信息设G=(V,E)是具有n个顶点的图,顶点的顺序为(v0,v1,…,vn-1),则G的邻接矩阵A: 下图是一个无向图和它的邻接矩阵: 通过观察不难发现:1)无向图的邻接矩阵是一个对称矩阵,且主对角线都为0。2)我们要知道某个顶点的度,其实就是这个顶点Vi在邻接矩阵中第i行(或第i列)的元素之相。比如顶点V1的度就是0+1+0+1+0=2。3)求顶点vi的所有邻接点就是将矩阵中第i行元素扫描一遍,
文章目录一、题目二、方法11、思路2、代码一、题目一个正整数N的因子中可能存在若干连续的数字。例如630可以分解为3×5×6×7,其中5、6、7就是3个连续的数字。给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。输入格式:输入在一行中给出一个正整数N(131)。输出格式:首先在第1行输出最长连续因子的个数;然后在第2行中按因子1*因子2*……*因子k的格式输出最小的连续因子序列,其中因子按递增顺序输出,1不算在内。输入样例:630输出样例:3567二、方法11、思路(1)易错点分析题目要求N(131),所以数据类型为longlongint。注意这里求的是连续因子