图论
文章平均质量分 64
图论
爱编程的大李子
路漫漫其修远兮,吾将上下而求索
展开
-
UVA10305 给任务排序 Ordering Tasks
题目描述John有n个任务要做,每个任务在做之前要先做特定的一些任务。输入第一行包含两个整数n和m,其中1<=n<=100。 n表示任务数,而m表示有m条任务之间的关系。 接下来有m行,每行包含两个整数i和j,表示任务i要在j之前做。当读入两个0(i=0,j=0)时,输入结束。输出包含q行,每行输出一条可行的安排方案。输入5 41 22 31 31 50 0输出1 4 2 5 3思路:拓扑序列的简单使用.这次使用的是紫书上的DFS方法来求解的.参考代码#inc原创 2021-06-08 21:37:23 · 328 阅读 · 0 评论 -
P1363---幻象迷宫
题目描述(喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫。)WD:呜呜,肿么办啊……LHX:momo…我们一定能走出去的!WD:嗯,+U+U!描述 Description幻象迷宫可以认为是无限大的,不过它由若干个N*M的矩阵重复组成。矩阵中有的地方是道路,用’.‘表示;有的地方是墙,用’#‘表示。LHX和WD所在的位置用’S’表示。也就是对于迷宫中的一个点(x,y),如果(x mod n,y mod m)是’.‘或者’S’,那么这个地方是道路;如果原创 2021-06-07 19:25:27 · 424 阅读 · 0 评论 -
HDU1317---HYZZY
题目描述输入样例50 1 2-60 1 3-60 1 420 1 50 050 1 220 1 3-60 1 4-60 1 50 050 1 221 1 3-60 1 4-60 1 50 050 1 220 2 1 3-60 1 4-60 1 50 0-1输出样例hopelesshopelesswinnablewinnable思路:题目的目的还是是求最长路径,刚开始有个初始的能量,每进入一个房间能量就会发生变化,最后判断到达终点时能原创 2021-06-05 15:32:20 · 608 阅读 · 0 评论 -
HDU1224---免费DIY之旅
题目描述输入输出输入样例230 70 9041 21 32 43 430 90 7041 21 32 43 4输出样例CASE 1#points : 90circuit : 1->3->1CASE 2#points : 90circuit : 1->2->1思路:题目的意思是求最长路径.每个点都有一个趣味大小,我们要求的是最大的趣味大小,以及找到其路径(关键路径).并且旅行路径只能从小往大走,那就说明对于某个点x,其原创 2021-06-04 22:32:24 · 167 阅读 · 0 评论 -
POJ1949---家务琐事
题目描述Farmer John 的家人在挤奶时会帮忙做家务,尽可能快地完成所有家务。在 FJ 家,有些家务要等到其他家务完成后才能开始,例如,在牛栏上之前是不可能洗牛的。Farmer John 列出了必须完成的 N (3 <= N <= 10,000) 个家务。每个杂务需要一个整数时间(1 <= 时间长度 <= 100)来完成,并且可能还有其他杂务必须在此杂务开始之前完成。我们将这些先决条件称为杂务。至少有一项家务活没有先决条件:第一个,编号 1。Farmer John 的家务活原创 2021-06-04 18:13:54 · 335 阅读 · 0 评论 -
HDU---4109指令安排
题目描述样例输入5 21 2 13 4 1样例输出2思路:CPU在1s之内可以同时执行多条指令.如下图中执行在第1个s中,执行指令0,1,3,在第二个指令中,执行指令2和4.所以结果为2. 我们可以边进行拓扑排序边进行求解最长路径.(因为前驱点完成了自己才能执行)参考代码#include<iostream>#include<stack>#include<string.h>using namespace std;const int ma原创 2021-06-03 23:01:24 · 396 阅读 · 0 评论 -
SDUTOJ2498---AOE网上的关键路径
题目描述一个无环的有向图称为无环图(Directed Acyclic Graph),简称DAG图。AOE(Activity On Edge)网:顾名思义,用边表示活动的网,当然它也是DAG。与AOV不同,活动都表示在了边上,如下图所示:如上所示,共有11项活动(11条边),9个事件(9个顶点)。整个工程只有一个开始点和一个完成点。即只有一个入度为零的点(源点)和只有一个出度为零的点(汇点)。关键路径:是从开始点到完成点的最长路径的长度。路径的长度是边上活动耗费的时间。如上图所示,1 到2 到 5到原创 2021-06-02 21:58:44 · 364 阅读 · 0 评论 -
POJ1270---Following Orders
题目描述顺序是数学和计算机科学中的一个重要概念。例如,Zorn 的引理指出:“一个偏序集合,其中每个链都有一个上限,其中包含一个最大元素。” 顺序在推理程序的定点语义时也很重要。这个问题既不涉及Zorn的引理也不涉及定点语义,但涉及顺序。给定 x < y 形式的变量约束列表,您将编写一个程序,打印与约束一致的变量的所有排序。例如,给定约束 x < y 和 x < z,变量 x、y 和 z 的两个排序与这些约束一致:x y z 和 x z y。输入输入由一系列约束规范组成。规范由原创 2021-05-31 16:06:45 · 410 阅读 · 0 评论 -
POJ3687---Labeling Balls
题目描述Windy 有 N 个不同重量的球,从 1 个单位到 N 个单位。现在,他尝试以 1 到 N 的方式标记它们:没有两个球共享相同的标签。标签满足几个约束条件,例如“标有 a 的球比标有 b 的球轻”。你能帮助windy找到解决办法吗?输入输入的第一行是测试用例的数量。每个测试用例的第一行包含两个整数,N (1 ≤ N ≤ 200) 和 M (0 ≤ M ≤ 40,000)。接下来的 M 行每行包含两个整数 a 和 b,表示标有 a 的球必须比标有 b 的球轻。 (1 ≤ a, b ≤ N原创 2021-05-30 18:03:57 · 241 阅读 · 1 评论 -
POJ1094---Sorting It All Out
题目描述不同值的升序排序序列是使用某种形式的小于运算符将元素从最小到最大排序的序列。例如,排序的序列 A, B, C, D 意味着 A < B, B < C 和 C < D. 在这个问题中,我们会给你一组 A < B 形式的关系,并要求你确定是否已指定排序顺序。输入输入由多个问题实例组成。每个实例以一行包含两个正整数 n 和 m 开始。第一个值表示要排序的对象数,其中 2 <= n <= 26。要排序的对象将是大写字母的前 n 个字符。第二个值 m 表示将在此问题实原创 2021-05-29 22:17:56 · 507 阅读 · 1 评论 -
POJ2367 家谱树
题目描述火星人的血缘系统已经够混乱了。实际上,火星人会在他们想要的时间和地点发芽。他们聚集在不同的群体中,所以一个火星人可以有一个父母也可以有十个。没有人会对一百个孩子感到惊讶。火星人已经习惯了这一点,他们的生活方式在他们看来很自然。在行星委员会中,混乱的系谱系统导致了一些尴尬。在那里会见最有价值的火星人,因此为了在所有讨论中不冒犯任何人,它首先被用来让年长的火星人发言,而不是年轻的火星人,仅是最年轻的没有孩子的评估员。不过,维持这个秩序还真不是一件小事。 Martian 并不总是认识他所有的父母(而且原创 2021-05-29 17:46:13 · 474 阅读 · 0 评论 -
POJ3268---Silver Cow Party
题目描述输入样例4 8 21 2 41 3 21 4 72 1 12 3 53 1 23 4 44 2 3输出样例10样例分析:该样例中2是聚餐地, 4 号奶牛的总时间是:3+3+4=10; 3号奶牛的总时间是:2+4+1+2=9; 1号奶牛的总时间是4+1 = 5. 所以最长的时间是10题目的大意是N个农场母牛要去一个农场参加母牛聚会,农场之间存在着路径.求去时和回来所用时间之和的最大值.而且母牛选取的都是最短路径.思路:母牛去的目的地和母牛回来时的出发地都是聚会点原创 2021-05-25 20:35:46 · 156 阅读 · 0 评论 -
POJ3259---Wormholes
题目描述Input23 3 11 2 21 3 42 3 13 1 33 2 11 2 32 3 43 1 8OutputNOYES思路:块田就是图中的点,其中路径是双向的,虫洞是单向的.题目的要求是看能不能找到回到起点时,时间在出发时间之前.主要还是判断图中有没有负环,并且在回到自己起点时,时间是不是负的.可以使用Bellman-Ford或者SPFA.举例:1.如下图,FJ返回1号时,正好为0.不满足题意.两种方法的代码如下:代码:Bellman-For原创 2021-05-23 19:35:51 · 191 阅读 · 0 评论 -
POJ1860---Currency Exchange
题目描述输入:3 2 1 20.01 2 1.00 1.00 1.00 1.002 3 1.10 1.00 1.10 1.00输出YES思路:有多种货币,货币之间可以进行交换,这就需要佣金,同时货币交换之间还存在着汇率.如下图所示20A币交换成B币,之后得到的就是(20-1) * 1.00 = 19B, B货币也可以继续进行交换,转换成C货币.题目求的是S币经过交换之后最终能够增加.货币的交换是多次的,而且货币的交换是双向的,能换过去,就能换回来.所以我们要求的是图中是否存在正原创 2021-05-23 16:58:45 · 362 阅读 · 0 评论 -
POJ1797---Heavy Transportation
题目描述输入13 31 2 31 3 42 3 5输出Scenario #1:4思路:从1到n有很多条路径,每个路径能够承载的重量由该路径中最小的边决定。题目求的是路径能够承担的最大重量。例如:1–2--4–6,最小边是3;1–3--4–6 最小边是4; 1–2--5–6最小边是2; 所以能承担的最大重量是4,所在的通路是1–3--4–6;这样的话我们可以对dijkstra算法进行改造,节点更新改为最小值大的更新。if(dist[v] < min(dist[u],ed原创 2021-05-18 17:10:08 · 215 阅读 · 0 评论 -
POJ1236 Network of Schools
题目描述输入52 4 3 04 5 0001 0输出12题意与思路:A—>B,但B–/->A说明是个有向图.子任务A:求需要收到新软件的学校数量.也就是说只要我们给这几个发了,那么其他学校也都能收到.解决:先利用Tarjan求出连通分量,然后对其进行缩点,之后统计每个缩点的入度.入度为0,则说明必须向这个连通分量中发一个.求强连通分量缩点后入度为0的个数即为所求.子任务B:发送到任意学校,该软件都可覆盖整个网络,说明要把这个网络构建成一个强连通图.题目是求添原创 2021-05-15 18:56:17 · 153 阅读 · 0 评论 -
POJ--2553 图的底部
题目描述输入原创 2021-03-13 22:50:50 · 195 阅读 · 0 评论 -
POJ---1144 电话网络
POJ—1144 电话网络题目描述输入输出输入样例55 1 2 3 4062 1 35 4 6 200输出样例12题意分析题中的电话交换机就是图中的点,线路双向说明是个无向图.题中至关重要的点也就是图中的割点,一旦出现了问题影响的点也就会有许多个.所以这个题主要是求割点的个数.参考代码#include<iostream>#include<stdio.h>#include<string.h>using namespace原创 2021-03-12 22:18:41 · 588 阅读 · 0 评论 -
POJ--3352 道路建设
POJ–3352 道路建设题目描述输入样例110 121 21 31 42 52 65 63 73 87 84 94 109 10输出样例12输入样例23 31 22 31 3输出样例20题意分析:题目中的景点相当于图中的点,道路相当于路径,当修一条路时候两个景点无法旅行,所以我们要通过修路来解决这个问题,让即使去掉一条边当前图依旧连通.也就是求在图中添加多少条边从而可以去掉任意边都依旧连通…易知图中,边双连通分量之间,去掉任意一条边该连原创 2021-03-12 22:07:56 · 562 阅读 · 0 评论 -
P2853 [USACO06DEC]Cow Picnic S
题目描述输入2 4 4231 21 42 33 4输出 #1复制2思路:DFS+图的存储(vector构建的邻接表). 从K个奶牛所在的地方进行DFS遍历,最后只有book[i] = k的牧场满足条件.参考代码#include<bits/stdc++.h>using namespace std;struct edge{ int u,v; edge(int u1,int v1):u(u1),v(v1){ };};int visited[1000+10原创 2021-05-11 21:32:30 · 185 阅读 · 0 评论 -
P5318 【深基18.例3】查找文献
题目描述请对这个图分别进行 DFS 和 BFS,并输出遍历结果。如果有很多篇文章可以参阅,请先看编号较小的那篇(因此你可能需要先排序)。输入8 91 21 31 42 52 63 74 74 87 8输出1 2 5 6 3 7 8 4 1 2 3 4 5 6 7 8 思路:DFS+BFS+图的存储 这个题中在搜索过程中需要不断的判断两点之间的边是否存在,所以应该使用邻接矩阵,但由于数据量太多,所以邻接矩阵也是不行的.我们可以使用vector.然后用一种新的方法来存储图原创 2021-05-10 22:21:30 · 292 阅读 · 2 评论 -
P2881 [USACO07MAR]Ranking the Cows G
P2881 [USACO07MAR]Ranking the Cows G题目描述FJ想按照奶牛产奶的能力给她们排序。现在已知有N头奶牛(1 ≤ N ≤ 1,000)。FJ通过比较,已经知道了M(1 ≤ M ≤ 10,000)对相对关系。每一对关系表示为“X Y”,意指X的产奶能力强于Y。现在FJ想要知道,他至少还要调查多少对关系才能完成整个排序。输入格式Line 1: Two space-separated integers: N and MLines 2…M+1: Two space-separ原创 2021-02-25 15:27:08 · 305 阅读 · 1 评论 -
P3916 图的遍历
题目描述输入4 31 22 44 3输出4 4 3 4原创 2021-05-07 14:33:12 · 176 阅读 · 0 评论 -
UVA11175 有向图D和E From D to E and Back
UVA11175 有向图D和E From D to E and Back题目描述采用任意有n个顶点和m个边的有向图D. 您可以通过以下方式制作D的Lying图E. E将有m个顶点,每个用于表示D的每个边。例如,如果D具有边(u,v),则E将具有称为uv的顶点。现在,每当D具有边(u,v)和(v,w)时,E将具有从顶点uv到顶点vw的边。 E中没有其他边。您将获得一个图E,并且必须确定E是否可能是某个有向图D的Lying图。输入输入的第一行给出案例数N (N < 220)。接下来是N个测试用例原创 2021-02-25 00:30:29 · 358 阅读 · 0 评论