图论
exmy
Less is more, and more is less.
展开
-
CCF- 201503-4 网络延时(树的直径)
问题描述 给定一个公司的网络,由n台交换机和m台终端电脑组成,交换机与交换机、交换机与电脑之间使用网络连接。交换机按层级设置,编号为1的交换机为根交换机,层级为1。其他的交换机都连接到一台比自己上一层的交换机上,其层级为对应交换机的层级加1。所有的终端电脑都直接连接到交换机上。 当信息在电脑、交换机之间传递时,每一步只能通过自己传递到自己所连接的另一台电脑或交换机。请问,电脑与电脑之间传递消原创 2016-09-03 19:08:41 · 537 阅读 · 0 评论 -
poj--1789 Truck History(最小生成树Prim算法)
poj 1789题解每个code视为一个结点,每两个code都有一条边,权值是这两个code对应位置的不同字符数。这便是一个求最小生成树的权重问题。 注:这是一个完全无向图,共有n(n−1)/2n(n - 1)/2条边,如果用Kruskal算法,会MLE。#include <iostream>#include <string>#include <cstring>#include <fstre原创 2016-03-17 22:29:01 · 364 阅读 · 0 评论 -
nyoj--92 图像有用区域(bfs)
nyoj 92题解此题实际上是要遍历”0”圈以外的数,把它们置为0。 BFS遍历是一层一层的,对于每个当前正遍历的结点,如果它的邻接点(邻近的元素)为0,那就不作为扩展结点放入队列中,否则将其置为0并作为扩展节点放入队列。 这种方法需要把整个图像(矩阵)套在”1”圈里,像装裱一副字画?#include <iostream>#include <cstdio>#include <queue>#原创 2016-03-15 10:44:37 · 351 阅读 · 0 评论 -
nyoj--115 城市平乱(最短路径)
题解计算这n个点到Q的最短路径,取最小值。 Floyd 会TLE. 没优化的Dijkstra。#include <iostream>#include <cstdio>#include <vector>#include <cstring>#include <algorithm>using namespace std;const int maxn = 1005;const int inf原创 2016-03-11 20:18:36 · 549 阅读 · 0 评论 -
nyoj--38 布线问题(最小生成树)
nyoj 38题解计算最小生成树的权重,然后加上花费最小的那个顶点的值。 Kruskal算法如下:#include <iostream>#include <cstdio>#include <vector>#include <cstring>#include <queue>#include <algorithm>using namespace std;const int maxn = 5原创 2016-03-10 14:36:40 · 363 阅读 · 0 评论 -
nyoj--20 吝啬的国度(dfs)
nyoj 20题意求一棵树每个结点的父节点,根节点为-1.题解就是一个无向图,dfs一下。#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;const int maxn = 100000 + 10;int p[ma原创 2016-03-09 23:12:55 · 420 阅读 · 0 评论 -
hdoj--2112 HDU Today(最短路径)
HDOJ 2112题解一个求最短路径的问题,与一般的最短路问题有所不同的是,此题图的结点是字符串。所以需要特殊处理。 一种策略是将每个字符串映射为一个整数,转化为普通的最短路问题。 还有一种是使用map,思想仍然是映射。 需要注意的一点是,目的地有可能是公交车到不了的,WA一次。#include <iostream>#include <cstdio>#include <map>#incl原创 2016-02-26 22:29:20 · 515 阅读 · 0 评论 -
UVa--1395 Slim Span(生成树)
题意给定带权无向图 GG,定义: The slimness of a spanning tree T is defined as the difference between the largest weight and the smallest weight among the n−1 edges of T. 求 slimness 尽可能小的生成树。题解把边按权值从小到大排序,枚举每一个边的区原创 2016-02-22 22:08:40 · 434 阅读 · 0 评论 -
UVa--10129 Play on Words(欧拉通路)
UVa 10129题意n个单词,是否可以把它们排成一个序列,是的每个单词的第一个字母的前一个单词的最后一个字母相同。输入中可以有重复单词。题解把字母看作结点,单词看作边,那么这题便是判断构成的有向图中是否存在欧拉通路。 有向图存在欧拉通路需要满足两个条件: 1. 它的无向图连通; 2. 顶点度数满足:顶点的入度等于出度,或者有两个顶点,一个入度比出度大1,另一个出度比入度大1,其他顶点入度等于原创 2016-02-21 11:26:22 · 482 阅读 · 0 评论 -
UVa--10305 Ordering Tasks(拓扑排序)
UVa 10305题解简单的拓扑排序。#include <bits/stdc++.h>using namespace std;const int maxn = 100 + 5;int graph[maxn][maxn];int indegree[maxn];int n, m;void topo(){ queue<int> Q; vector<int> ans; for原创 2016-02-20 15:33:28 · 439 阅读 · 0 评论 -
PAT--1122. Hamiltonian Cycle (25)
DescriptionThe “Hamilton cycle problem” is to find a simple cycle that contains every vertex in a graph. Such a cycle is called a “Hamiltonian cycle”.In this problem, you are supposed to tell if a give原创 2016-12-10 21:18:53 · 1618 阅读 · 1 评论 -
PAT--1094. The Largest Generation
link题解求一棵树中节点数最大的一层,dfs和bfs皆可。#include <iostream>#include <algorithm>#include <cstdio>#include <vector>#include <map>#include <queue>using namespace std;const int maxn = 100;vector<int> G[maxn];原创 2016-12-06 15:36:15 · 207 阅读 · 0 评论 -
PAT--1076. Forwards on Weibo (30)(图的bfs遍历)
DescriptionWeibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and may follow many other users as well. Hence a social network is formed with followers relation原创 2016-12-09 21:40:52 · 298 阅读 · 0 评论 -
hdoj 4109--Instrction Arrangement(topsort)
题解实际上就是按照拓扑序求关键路径。#include <cstdio>#include <queue>#include <vector>#include <cstring>using namespace std;const int maxn = 1000 + 10;int n, m;struct Edge{ int v, w, next;}edge[10010];int head原创 2017-09-16 17:25:01 · 426 阅读 · 0 评论 -
PAT--1111. Online Map
Input our current position and a destination, an online map can recommend several paths. Now your job is to recommend two paths to your user: one is the shortest, and the other is the fastest. It is g原创 2018-01-20 14:52:45 · 337 阅读 · 0 评论 -
nyoj--58 最少步数
题解BFS或者DFS最短路。#include <iostream>#include <cstdio>#include <queue>#include <cstring>#include <algorithm>using namespace std;typedef pair<int, int> pii;const int inf = 1 << 30;int maze[9][9] = {原创 2016-03-19 10:21:14 · 619 阅读 · 0 评论 -
nyoj--284 坦克大战(bfs+优先队列)
nyoj 284题解与一般的迷宫问题不同,这里的每一点如果可扩展,可能要走1步或者2步,如果用普通的队列,无法保证到达终点时步数最少。 因此使用优先队列,每一次走都选择步数最少的进行扩展。#include <iostream>#include <queue>#include <cstring>#include <string>#include <cstdio>#include <algo原创 2016-03-19 12:36:48 · 434 阅读 · 0 评论 -
CCF-201503-5 最小花费
问题描述 C国共有n个城市。有n-1条双向道路,每条道路连接两个城市,任意两个城市之间能互相到达。小R来到C国旅行,他共规划了m条旅行的路线,第i条旅行路线的起点是si,终点是ti。在旅行过程中,小R每行走一单位长度的路需要吃一单位的食物。C国的食物只能在各个城市中买到,而且不同城市的食物价格可能不同。 然而,小R不希望在旅行中为了购买较低价的粮食而绕远路,因此他总会选择最近的路走。现在,请原创 2016-09-04 21:39:42 · 1751 阅读 · 0 评论 -
codeforces--707B. Bakery
cf 707B题解n个顶点的图,在 k 个顶点和另外 n - k 个顶点中寻一条最短的边。#include <bits/stdc++.h>using namespace std;const double eps = 1E-8;const int dx[4] = {1, 0, 0, -1};const int dy[4] = {0, -1, 1, 0};const int inf = 0x3f原创 2016-08-26 15:10:06 · 665 阅读 · 0 评论 -
PAT--1003. Emergency (最短路)
1003. Emergency题解最短路,要维护两个数据,最短路的条数以及救援队的最大个数。#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <queue>using namespace std;const int maxn = 500 + 3;const int inf原创 2016-09-29 23:08:04 · 400 阅读 · 0 评论 -
poj--2446 Chessboard(二分图最大匹配)
Chessboard题解初次练习 匈牙利算法。 二分图最大匹配问题与匈牙利算法的核心思想对于相邻的两个格子,其(行数+列数)的值必然是一奇一偶,这就可以划分为两个集合,在这两个集合上跑一遍匈牙利算法计算最大匹配。最重要的是建图,对每一个非hole的格子,与四周相邻的非hole的格子有边连接。实际上,奇偶可以只是概念上的划分,建图时不必区分,在这个图上跑一遍匈牙利算法计算得到的最大匹配就是 (原创 2016-09-28 23:40:30 · 590 阅读 · 0 评论 -
poj--3249 Test for Job(topsort + dp)
Test for Job题解DAG图上的单源最短路径。#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <vector>using namespace std;const int maxn = 100000 + 5;const int maxe = 1000000 + 5;原创 2016-09-23 20:48:29 · 392 阅读 · 0 评论 -
poj--1330 Nearest Common Ancestors(LCA/Tarjan)
Nearest Common Ancestors题解求有根树中u和v的最近公共祖先。 初次练习LCA Tarjan. 参考LCA/Tarjan是基于dfs+并查集的离线算法,即需要记录下所有的询问后再应答。LCA(u, v)是根至u的路径上到v最近的节点。#include <iostream>#include <cstdio>#include <algorithm>#include原创 2016-09-22 21:21:50 · 364 阅读 · 0 评论 -
poj--2449 Remmarguts' Date(k短路)
Remmarguts’ Date题解求s到t的第k短路的长度。 SPFA + A*算法。A*算法通过一个估价函数f(h)来估计图中的当前点p到终点的距离,并由此决定它的搜索方向,当这条路径失败时,它会尝试其他路径。估价函数 = 当前值+当前位置到终点的距离,即f(p)=g(p)+d(p)f(p) = g(p)+d(p) 其中,g(p)g(p)为当前从s到p所走的路径长度,d(p)d(p)为从原创 2016-09-16 20:32:56 · 396 阅读 · 0 评论 -
CCF-201409-4 最优配餐(BFS)
问题描述 栋栋最近开了一家餐饮连锁店,提供外卖服务。随着连锁店越来越多,怎么合理的给客户送餐成为了一个急需解决的问题。 栋栋的连锁店所在的区域可以看成是一个n×n的方格图(如下图所示),方格的格点上的位置上可能包含栋栋的分店(绿色标注)或者客户(蓝色标注),有一些格点是不能经过的(红色标注)。 方格图中的线表示可以行走的道路,相邻两个格点的距离为1。栋栋要送餐必须走可以行走的道路,原创 2016-09-09 10:36:21 · 584 阅读 · 0 评论 -
CCF-201412-4 最优灌溉(最小生成树)
问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口很深的水井,所有的麦田都从这口井来引水灌溉。 为了灌溉,雷雷需要建立一些水渠,以连接水井和麦田,雷雷也可以利用部分麦田作为“中转站”,利用水渠连接不同的麦田,这样只要一片麦田能被灌溉,则与其连接的麦田也能被灌溉。 现在雷雷知道哪些麦田之间可以建设水渠和建设每个水渠所需要的费用(注意不是所有麦田之间都可以建立水渠)原创 2016-09-04 21:50:58 · 862 阅读 · 0 评论 -
CCF-201604-4 游戏(三维BFS)
问题描述 小明在玩一个电脑游戏,游戏在一个n×m的方格图上进行,小明控制的角色开始的时候站在第一行第一列,目标是前往第n行第m列。 方格图上有一些方格是始终安全的,有一些在一段时间是危险的,如果小明控制的角色到达一个方格的时候方格是危险的,则小明输掉了游戏,如果小明的角色到达了第n行第m列,则小明过关。第一行第一列和第n行第m列永远都是安全的。 每个单位时间,小明的角色必须向上下左右四原创 2016-09-02 11:46:32 · 519 阅读 · 0 评论 -
hdoj--1532 Drainage Ditches(网络流/最大流)
hdoj 1532题解#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <vector>#include <cstring>using namespace std;const int maxn = 200 + 10;const int inf = 0x7fffffff;st原创 2016-05-27 09:43:19 · 417 阅读 · 0 评论 -
CCF-201509-4 高速公路(有向强连通分量)
问题描述 某国有n个城市,为了使得城市间的交通更便利,该国国王打算在城市之间修一些高速公路,由于经费限制,国王打算第一阶段先在部分城市之间修一些单向的高速公路。 现在,大臣们帮国王拟了一个修高速公路的计划。看了计划后,国王发现,有些城市之间可以通过高速公路直接(不经过其他城市)或间接(经过一个或多个其他城市)到达,而有的却不能。如果城市A可以通过高速公路到达城市B,而且城市B也可以通过高速原创 2016-04-09 14:56:55 · 1549 阅读 · 0 评论 -
CCF-201512-4 送货(欧拉路径)
问题描述 为了增加公司收入,F公司新开设了物流业务。由于F公司在业界的良好口碑,物流业务一开通即受到了消费者的欢迎,物流业务马上遍及了城市的每条街道。然而,F公司现在只安排了小明一个人负责所有街道的服务。 任务虽然繁重,但是小明有足够的信心,他拿到了城市的地图,准备研究最好的方案。城市中有n个交叉路口,m条街道连接在这些交叉路口之间,每条街道的首尾都正好连接着一个交叉路口。除开街道的首尾端原创 2016-04-07 22:07:00 · 2120 阅读 · 3 评论 -
UVa--10048 Audiophobia(floyd)
UVa 10048题意求图中两点最大噪声值最小的路径。题解Floyd算法变形一下: d[i][j]=min(d[i][j],max(d[i][k],d[k][j]))d[i][j] = min(d[i][j], max(d[i][k], d[k][j]))#include <bits/stdc++.h>using namespace std;const int maxn = 105;const原创 2016-03-29 17:32:16 · 405 阅读 · 0 评论 -
PAT--1087. All Roads Lead to Rome
Indeed there are many different tourist routes from our city to Rome. You are supposed to find your clients the route with the least cost while gaining the most happiness.Input Specification:Eac原创 2018-01-20 20:18:19 · 612 阅读 · 0 评论