图论
背着代码的蜗牛
这个作者很懒,什么都没留下…
展开
-
图的连通性问题之连通和最小环
判断图中两点是否连通1、floyed算法 时间复杂度:O(N3) 算法实现:把相连的两点设为dis[i][j]true,不相连的两点设为dis[i][j]=flase,用Floyed算法的变形:for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) dis[i][j]=dis[i][j]||(dis[原创 2016-07-02 17:49:28 · 2765 阅读 · 0 评论 -
桐桐的糖果计划(tarjan求桥+双连通分量)
桐桐的糖果计划背景: 桐桐是一个快乐的小朋友,他生活中有许多许多好玩的事,让我们一起来看看吧…… 描述: 桐桐很喜欢吃棒棒糖。他家处在一大堆糖果店的附近。 但是,他们家的区域经常出现塞车、塞人等情况,这导致他不得不等到塞的车或人走光了他才能去买到他最爱吃的棒棒糖品种。于是,他去找市长帮他修路,使得每两个糖果店之间至少有两条完全不同的路。可是市长经费有限,于是让桐桐找出哪些路被塞住后会使某些糖原创 2016-09-04 20:50:09 · 756 阅读 · 0 评论 -
封锁阳光大学(染色)
封锁阳光大学题目描述: 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街。河蟹看到欢快的曹,感到不爽。河蟹决定封锁阳光大学,不让曹刷街。 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M条道路连接。每只河蟹可以对一个点进行封锁,当某个点被封锁后,与这个点相连的道路就被封锁了,曹就无法在与这些道路上刷街了。非常悲剧的一点是,河蟹是一种不和谐的生物,当两只河蟹封锁了相邻的原创 2016-08-25 15:36:06 · 1602 阅读 · 0 评论 -
车站分级(拓扑排序)
车站分级来源: 2013年NOIP全国联赛普及组 题目描述: 一条单向的铁路线上,依次有编号为1, 2, …, n的n个火车站。每个火车站都有一个级别,最低为1级。现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车站x,则始发站、终点站之间所有级别大于等于火车站x的都必须停靠。(注意:起始站和终点站自然也算作事先已知需要停靠的站点) 例如,下表是5趟车次的运行情况。原创 2016-08-26 18:09:34 · 959 阅读 · 0 评论 -
匈牙利游戏(次短路问题)
匈牙利游戏来源: 2012年CCC加拿大高中生信息学奥赛 题目描述: 欢迎来到匈牙利游戏!布达佩斯(匈牙利首都)的街道形成了一个弯曲的单向网络。 你被强制要求参加一个赛跑作为一个TV秀的一部分节目,比赛中你需要穿越这些街道,从s开始,到t结束。 很自然的,你想要尽快的完成比赛,因为你的比赛完成的越好,你就能得到更多的商业促销合同。 但是,有一个需要了解的是,如果有人过于聪明找到从s到t的最原创 2016-08-05 15:54:31 · 714 阅读 · 5 评论 -
最短路计数
最短路计数题目描述: 给出一个N个顶点M条边的无向无权图,顶点编号为1~N。问从顶点1开始,到其他每个点的最短路有几条。 输入输出格式 输入格式: 输入第一行包含2个正整数N,M,为图的顶点数与边数。 接下来M行,每行两个正整数x, y,表示有一条顶点x连向顶点y的边,请注意可能有自环与重边。 输出格式: 输出包括N行,每行一个非负整数,第i行输出从顶点1到顶点i有多少条不同的最短路,原创 2016-09-24 11:05:00 · 606 阅读 · 0 评论 -
爱情之路(二维spfa)
爱情之路题目描述: yh非常想念他的女朋友小y,于是他决定前往小y所在的那块大陆。 小y所在的大陆共有n个城市,m条双向路,每条路连接一个或两个城市。经过一条路ei需要耗费时间ti。此外,每条路均有一个特定标识,为’L’,’O’,’V’,’E’,中的某个字母。yh从1号城市出发,前往位于n号城市的小y所在处。 为了考验yh,小y规定,yh必须按照‘L’->’O’->’V’->’E’->’L’原创 2016-10-23 20:57:41 · 786 阅读 · 2 评论 -
骑马修栅栏(欧拉路)
骑马修栅栏题目描述: Farmer John每年有很多栅栏要修理。他总是骑着马穿过每一个栅栏并修复它破损的地方。 John是一个与其他农民一样懒的人。他讨厌骑马,因此从来不两次经过一个栅栏。你必须编一个程序,读入栅栏网络的描述,并计算出一条修栅栏的路径,使每个栅栏都恰好被经过一次。John能从任何一个顶点(即两个栅栏的交点)开始骑马,在任意一个顶点结束。 每一个栅栏连接两个顶点,顶点用1到50原创 2016-09-28 21:43:32 · 747 阅读 · 0 评论 -
奶牛的身高(差分约束)
奶牛的身高题目描述: 奶牛们在FJ的养育下茁壮成长。这天,FJ给了奶牛Bessie一个任务,去看看每个奶牛场中若干只奶牛的身高,由于Bessie是只奶牛,无法直接看出第i只奶牛的身高,而只能看出第i只奶牛与第j只奶牛的身高差,其中第i 只奶牛与第j只奶牛的身高差为A(i<=n)。当A大于0时表示这只奶牛比前一只奶牛高A cm,小于0时则是低。现在,FJ让Bessie总共去看了m次身高,当然也原创 2016-10-16 14:06:02 · 911 阅读 · 0 评论 -
加权二分图之km算法
加权二分图之km算法百科: KM算法求的是完备匹配下的最大权匹配: 在一个二分图内,左顶点为X,右顶点为Y,现对于每组左右连接XiYj有权wij,求一种匹配使得所有wij的和最大。步骤: 一般对KM算法的描述,基本上可以概括成以下几个步骤: (1)初始化可行标杆 (2)用匈牙利算法寻找完备匹配 (3)若未找到完备匹配则修改可行标杆 (4)重复(2)(3)直到找到相等子图的完备匹配原创 2016-11-08 22:10:56 · 4025 阅读 · 3 评论 -
spfa判断负环
spfa判断负环spfa+bfs#include<iostream>#include<cstdio>#include<queue> #include<cstring>using namespace std;const int maxn=200010;const int inf=0x7fffffff;int t,n,m,tot,d[maxn],dis[maxn],head[maxn];原创 2016-11-11 20:15:39 · 739 阅读 · 0 评论 -
城堡(统计最短路数问题)
城堡问题描述: 给定一张n个点m条边的无向连通图,每条边有边权。我们需要从m条边中 选出n−1条,构成一棵树。记原图中从 1 号点到每个节点的最短路径长度为di,树中从 1 号点到每个节点的最短路径长度为? ? ,构出的树应当满足对于任意节点si,都有di=si。 请你求出选出n−1条边的方案数。 输入格式: 输入的第一行包含两个整数n和m。 接下来m行,每行包含三个整数u、v和w,描述原创 2016-11-13 15:32:56 · 542 阅读 · 0 评论 -
find the most comfortable road(并查集与图论)
find the most comfortable roadProblem Description XX星有许多城市,城市之间通过一种奇怪的高速公路SARS(Super Air Roam Structure—超级空中漫游结构)进行交流,每条SARS都对行驶在上面的Flycar限制了固定的Speed,同时XX星人对 Flycar的“舒适度”有特殊要求,即乘坐过程中最高速度与最低速度的差越小乘坐越舒服原创 2016-11-13 21:44:21 · 388 阅读 · 0 评论 -
备用交换机(tarjan求割点)
备用交换机问题描述: n个城市之间有通讯网络,每个城市都有通讯交换机,直接或间接与其它城市连接。因电子设备容易损坏,需给通讯点配备备用交换机。但备用交换机数量有限,不能全部配备,只能给部分重要城市配置。于是规定:如果某个城市由于交换机损坏,不仅本城市通讯中断,还造成其它城市通讯中断,则配备备用交换机。请你根据城市线路情况,计算需配备备用交换机的城市个数,及需配备备用交换机城市的编号。 输入格式:原创 2016-09-04 16:51:30 · 470 阅读 · 0 评论 -
信息传递(tarjan算法)
信息传递来源: NOIP 2015 Day1 T2 题目描述: 有个同学(编号为 1 到)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为的同学的信息传递对象是编号为的同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息,但是每人只会把信息告诉一个人,即自己的信息原创 2016-09-03 10:40:08 · 3564 阅读 · 0 评论 -
观光旅游(floyed最小环)
观光旅游题目描述: 某旅游区里面有N个景点。两个景点之间可能直接有道路相连,用a[i][j]表示它的长度,否则它们之间没有直接的道路相连。这里所说的道路是没有规定方向的,也就是说,如果从i到j有直接的道路,那么从j到i也有,并且长度与之相等。 旅游区规定:每个游客的旅游线路只能是一个回路(好霸道的规定)。也就是说,游客可以任取一个景点出发,依次经过若干个景点,最终回到起点。一天,Smart决定到原创 2016-08-24 10:18:21 · 612 阅读 · 0 评论 -
图的连通性问题之强连通分量初步
什么是强连通分量有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图,称为强连通分量。强连通分量的个数Kosaraju算法Kosaraju算法可以求出有向图中的强连通分量个数,并且对分属于不同强连通分量的点进行标记。 算原创 2016-07-03 16:44:01 · 562 阅读 · 0 评论 -
最小生成树
最小生成树概念: 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。 简单来说:最小生成树就是在一个连通图(每个点都相连的无向图)中使得权值和最小的树,保证每个点都在里面。 最小生成树其实是最小权重生成树的简称。 最小生成树又叫“MST”。 应用: 例如:要在n个城市之间铺设光缆,主要目标是要使这 n 个城市的任意两个之间原创 2016-07-09 17:14:32 · 434 阅读 · 0 评论 -
图的连通性问题之tarjan算法
Tarjan算法一种由Robert Tarjan提出的求解有向图强连通分量的线性时间的算法。 Tarjan算法是基于对图深度优先搜索的算法,每个强连通分量为搜索树中的一棵子树。搜索时,把当前搜索树中未处理的节点加入一个堆栈,回溯时可以判断栈顶到栈中的节点是否为一个强连通分量。 定义dfn(u)为节点u搜索的次序编号,low(u)为u或u的子树能够追溯到的最早的栈中节点的次序号。 当dfn(u)原创 2016-07-08 21:45:20 · 2457 阅读 · 2 评论 -
最短路径算法
Floyed算法Floyed-Warshall 算法用来找出每对点之间的最短距离。它需要用邻接矩阵来储存边,这个算法通过考虑最佳子路径来得到最佳路径。 注意单独一条边的路径也不一定是最佳路径。思想: 从任意一条单边路径开始。所有两点之间的距离是边的权,或者无穷大,如果两点之间没有边相连。 对于每一对顶点 u 和 v,看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比己知的路径更短。如果是原创 2016-06-26 21:45:52 · 690 阅读 · 1 评论 -
easy sssp(spfa判断负环)
easy sssp描述: 输入数据给出一个有N(2 <= N <= 1,000)个节点,M(M <= 100,000)条边的带权有向图. 要求你写一个程序, 判断这个有向图中是否存在负权回路. 如果从一个点沿着某条路径出发, 又回到了自己, 而且所经过的边上的权和小于0, 就说这条路是一个负权回路. 如果存在负权回路, 只输出一行-1; 如果不存在负权回路, 再求出一个点S(1 <= S原创 2016-08-05 17:57:55 · 1702 阅读 · 0 评论 -
K短路问题模板(spfa+A*)
k短路问题给一个图,起点s、终点t、k,求起点到终点的第k短路。 基本思路: 首先spfa求出反向图中求出终点t到其他所有点的距离(预处理) 再从起点开始使用优先队列进行宽搜,用cnt记录到达终点的次数,当cnt==k时的路径长度即为所得。 搜索的方向用一个估价函数f=g+dis来确定,其中g表示起点到当前点的路径长度,dis表示当前点到终点的最短路径(即之前的预处理),每次扩展估价函数值最原创 2016-09-10 10:35:21 · 1214 阅读 · 0 评论 -
Remmarguts' Date(k短路问题)
Remmarguts’ DateDescription:“Good man never makes girls wait or breaks an appointment!” said the mandarin duck father. Softly touching his little ducks’ head, he told them a story. “Prince Remmarguts l原创 2016-09-10 10:58:59 · 1359 阅读 · 0 评论 -
联合权值
联合权值来源: NOIP2014提高组 day1 T2 题目描述: 无向连通图G 有n 个点,n - 1 条边。点从1 到n 依次编号,编号为 i 的点的权值为W i ,每条边的长度均为1 。图上两点( u , v ) 的距离定义为u 点到v 点的最短距离。对于图G 上的点对( u, v) ,若它们的距离为2 ,则它们之间会产生Wu×Wv 的联合权值。 请问图G 上所有可产生联合权值的有序点原创 2016-08-19 20:05:38 · 547 阅读 · 0 评论 -
魔法猪学院(k短路问题)
魔法猪学院来源: 2010年 山东省选 题目描述: iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练。经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的;元素与元素之间可以互相转换;能量守恒……。 能量守恒……iPig 今天就在进行一个麻烦的测验。iPig 在之前的学习中已经知道了很多种元素,并学会了可以转化这原创 2016-09-10 16:53:28 · 634 阅读 · 1 评论 -
路由选择(最短路,次短路,第三短路)
路由选择题目描述: 在网络通信中,经常需要求最短路径。但完全用最短路径传输有这样一个问题:如果最终在两个终端节点之间给出的最短路径只有一条。则在该路径中的任一个节点或链路出现故障时,信号传输将面临中断的危险。因此,对网络路由选择作了以下改进: 为任意两节点之间通信提供三条路径供其选择,即最短路径、第二最短路径和第三最短路径。 第一最短路径定义为:给定一个不含负回路的网络D={V原创 2016-08-09 15:44:37 · 2023 阅读 · 0 评论 -
玛丽卡(spfa删边求最短路)
玛丽卡题目描述: 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复。 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行。 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市到另一个城市路上所需花费的时间。 麦克在车中无意中听到有一条路正在维修,并且那儿正堵车,但没听清楚到底是哪一条路。无论哪一条路正在维修,从玛丽卡所在的城市都能到达麦克所在的城市。 玛丽卡将只从不原创 2016-08-10 19:07:48 · 1669 阅读 · 0 评论 -
Car的旅行路线(最短路+寻找矩形第四个点)
Car的旅行路线来源: 2001年 NOIP 提高组 T4 题目描述: 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游。她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第I个城市中高速铁路了的单位里程价格为Ti,任意两个不同城市的机场之间均有航线,所有航线单位里程的价格均为t。 那么Car应如何安排到城市B的路线才能尽可能的节原创 2016-08-23 16:41:37 · 989 阅读 · 0 评论 -
shopping(多次spfa求局部最短路)
includeincludeincludeincludeincludeusing namespace std; const int maxn=200010; int t,n,m,k,tot,dis[maxn],head[maxn],a[maxn],c[maxn],g[20][20]; bool flag[maxn]; struct node { int to; int原创 2016-11-13 22:28:12 · 463 阅读 · 0 评论