![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
Tongqi_Liu
喜欢看书,ACMed,攻城狮
展开
-
并查集
POJ 1703 Find them ,Catch them需要理清楚每个节点与父节点及根节点之间的关系,由于题目只涉及两种关系,对于点x,用r[x]=0代表与根节点关系相同,用r[x]=1代表与根节点关系不同。附上代码:#include<iostream>#include<algorithm>#include<cstdio>...原创 2014-03-09 20:42:02 · 507 阅读 · 0 评论 -
dfs算法的使用
算法思想,dfs算法是一个递归的过程,有回退的过程,对于一个无向连通图,访问图中某个顶点v0后,然后访问它的某一个邻接顶点v1,然后再从v1出发,访问v1的违访问过的邻接顶点,如此下去,直至到达所有的领接顶点都被访问过。然后回退一步,回到前一次被访问的顶点,看是否还有没有访问的顶点,如果有,则从这个顶点出发,进行向上述的过程一样进行访问,如果没有,则再回退一步,进行类似的访问,直至所有的顶点都被访...原创 2014-02-26 22:15:31 · 2247 阅读 · 0 评论 -
POJ 1962 Corporative Network
思路和正常并查集差不多,只是要注意更新节点到根的距离#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;#define MAXN 20010int f[MAXN];int sets[MA...原创 2014-03-12 15:25:51 · 514 阅读 · 0 评论 -
NY20 吝啬的国度
描述在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来。现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设你不走重复的路)。输入第一行输入一个整数M表示测试数据共有M(1<=M<=5)组每组测试数据的第一行输入一个正整数N(1<=N<=100000)和一个正整数S...原创 2014-03-19 20:26:40 · 446 阅读 · 0 评论 -
HDU 1010(剪枝+深搜)
Tempter of the BoneTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 62107Accepted Submission(s): 16992Problem Description...原创 2014-03-20 19:53:26 · 558 阅读 · 0 评论 -
POJ 3414 Pots(BFS)
题意:给你两个容量为a,b的容器,分别有几种操作,分别是:将a倒掉,将b倒掉,将a加满,将b加满,将a倒入b,将b倒入a,六种操作,只要有一个达到c就完成了,求最少的步数,并输出过程。#include <iostream>#include <queue>using namespace std;int flag,path[1000];struct po...原创 2014-03-26 16:09:22 · 358 阅读 · 0 评论 -
POJ 3728 Catch That Cow (广搜)
Catch That CowTime Limit:2000MS Memory Limit:65536K Total Submissions:42564 Accepted:13225 DescriptionFarmer John has been informed of the location of a fugitive cow an...原创 2014-03-30 15:05:46 · 449 阅读 · 0 评论 -
ZOJ 3706 Break Standard Weight(深搜处理)
Break Standard WeightTime Limit:2 Seconds Memory Limit:65536 KBThebalancewas the first mass measuring instrument invented. In its traditional form, it consists of a pivoted horizontal lev...原创 2014-03-30 15:46:24 · 679 阅读 · 0 评论 -
POJ 3253 Fence Repair(贪心+优先队列)
Fence RepairTime Limit:2000MS Memory Limit:65536K Total Submissions:23110 Accepted:7365 DescriptionFarmer John wants to repair a small length of the fence around the pa...原创 2014-03-30 20:19:39 · 425 阅读 · 0 评论 -
HDU 1242 Rescue(BFS+优先队列)
Problem DescriptionAngel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M (N, M <= 200) matrix. There are WALLs, ROADs, and GUARDs in the prison....原创 2014-03-31 22:11:25 · 430 阅读 · 0 评论 -
USACO 2.1.1&&POJ 1164(dfs)
The CastleTime Limit:1000MS Memory Limit:10000K Total Submissions:5557 Accepted:3129 Description 1 2 3 4 5 6 7 ############################# 1 # ...原创 2014-04-01 16:36:27 · 418 阅读 · 0 评论 -
USACO 2.1.4 Healthy Holsteins (DFS)
题意:农民JOHN以拥有世界上最健康的奶牛为傲。他知道每种饲料中所包含的牛所需的最低的维他命量是多少。请你帮助农夫喂养他的牛,以保持它们的健康,使喂给牛的饲料的种数最少。给出牛所需的最低的维他命量,输出喂给牛需要哪些种类的饲料,且所需的饲料剂量最少。维他命量以整数表示,每种饲料最多只能对牛使用一次,数据保证存在解。思路:搜索每种饲料用了没有,即每层搜索有两种状态:vis[n]=0...原创 2014-04-05 20:15:36 · 661 阅读 · 0 评论 -
POJ 2139 Six Degrees of Cowvin Bacon(任意两点最短路,Floyd)
题目:http://poj.org/problem?id=2139题意:奶牛们最近要拍电影了(ACM真是各种奶牛。。。)1、若两个的奶牛一起工作则,他们相互的度(degrees)为1;2、若两只奶牛a、b不一起工作,但与另有一只奶牛都和他们工作,则a、b的相互的度为2。求奶牛的与其他奶牛的度的平均值的一百倍的整数。#include<iostream>...原创 2014-04-06 17:38:53 · 574 阅读 · 0 评论 -
POJ 3259 Wormholes(Bellman-Ford)
WormholesTime Limit:2000MS Memory Limit:65536K Total Submissions:27859 Accepted:10026 DescriptionWhile exploring his many farms, Farmer John has discovered a number of ...原创 2014-04-06 20:24:14 · 455 阅读 · 0 评论 -
POJ 3268 Silver Cow Party(dijkstra)
题意:有N(1≤N≤1000)个农场,编号为1~N,每个农场有一头奶牛。这些奶牛将参加在#X(1≤X≤N)号农场举行的派对。这N 个农场之间有M(1≤M≤100,000)条单向路,通过第i 条路将需要花费Ti(1≤Ti≤100)单位时间。每头奶牛必须走着去参加派对。派对开完以后,返回到它的农场。每头奶牛都很懒,所以总是选择一条具有最短时间的最优路。每头奶牛的往返路线是不一样的,因为...原创 2014-04-10 18:41:44 · 497 阅读 · 0 评论 -
POJ 1860 Currency Exchange(Bellman-Ford)
题意 : 有关汇率的问题,汇率rab,增加了一个手续费cab每次的结果是 (本金 - 手续费) * 汇率,而且一个人拥有的钱的类型是已知的,拥有的value 钱的个数也是已知的, 问你能不能增值。思路: 在Bellonman原本的实现过程中,是寻找最短路,判断负环。这一题恰好相反,需寻找最长路,判断有无无限松弛的正环#include <io...原创 2014-04-10 20:05:18 · 492 阅读 · 0 评论 -
POJ 2253 Frogger (Floyd)
题意: 给出两只青蛙的坐标A、B,和其他的n-2个坐标,任一两个坐标点间都是双向连通的。显然从A到B存在至少一条的通路,每一条通路的元素都是这条通路中前后两个点的距离,这些距离中又有一个最大距离。现在要求求出所有通路的最大距离,并把这些最大距离作比较,把最小的一个最大距离作为青蛙的最小跳远距离。思路:用Floyd求出两点间最短路,再求出每个点开始的最长路,最后在其中选择最小的一...原创 2014-04-14 20:31:35 · 359 阅读 · 0 评论 -
POJ 1125 Stockbroker Grapevine (Floyd)
链接:http://poj.org/problem?id=1125题意:给出一个社交网络,每个人有几个别人可以传播谣言,传播谣言需要时间。问要使得谣言传播的最快,应该从那个人开始传播谣言以及使得所有人都知道这个谣言需要多少时间,时间的定义是使得最后一个人知道这个谣言的时间。思路:算出每一个人所传播需要的总时间,比较即可#include <stdio.h>#i...原创 2014-04-14 21:32:31 · 522 阅读 · 0 评论 -
POJ 3669 Meteor Shower(BFS)
题目链接:http://poj.org/problem?id=3669题意:给定一个平面,在某些时刻下流星雨,当流星雨落在(x,y)点时,该点及四周的四个点都被破坏。人从(0,0)点开始走,每秒沿四个方走一步,问最少要走多少步才能走到安全的地点。其中0<=x,y<=300,但是人所活动的区域是第一象限,所以比范围这个要大思路:广搜处理,但是要注意一些细节,比如一开始如...原创 2014-04-16 11:48:21 · 549 阅读 · 0 评论 -
POJ 2186 Popular Cows (强连通分量)
链接地址:http://poj.org/problem?id=2186题意:n头奶牛,给出若干个欢迎关系a b,表示a欢迎b,欢迎关系是单向的,但是是可以传递的。另外每个奶牛都是欢迎他自己的。求出被所有的奶牛欢迎的奶牛的数目。思路:N个顶点的有向图,有M条边(N≤10000,M≤50000)。求一共有多少个点,满足这样的条件:所有其它的点都可以到达这个点。#include...原创 2014-04-29 17:34:42 · 374 阅读 · 0 评论 -
HDU 1548 A strange lift (BFS或最短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1548题意:有一个建筑有N层,里面有一架电梯。给你一个起点层数和一个终点层数。在每一层都有一个按钮,按钮上面有一个数字,表示可以上或者下Ki层。然后你可以由起点开始选择上或者下(重复……),当你到达终点为止(或者不可能到达终点为止)。求你需要按按钮的次数,不能到达则输出-1。思路:可以用BFS或...原创 2014-07-14 17:30:31 · 507 阅读 · 0 评论 -
HDU 1142 A Walk Through the Forest (SPFA+记忆化搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1142题意及思路:找一共有多少条符合题意的路。能够从点A走到点B的要求是:点A到终点的最短路 > 点B到终点的最短路。 也就是说:从终点出发,求每一个点的最短路,然后那些最短路的值记录起来,作为能否通过的判断条件。最后用记忆化搜索来搜索出一共多少条符合要求的路不太懂如何进行记忆化搜索...原创 2014-07-14 21:22:38 · 426 阅读 · 0 评论 -
UVA 12295 Optimal Symmetric Paths (spfa + 记忆化搜索)
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3716题意:一个N * N 的方格,从左上角走到右下角,需要让走过的路径对称,求最短路径有多少条思路:由于要求走的路径对称,所以可以把关于对角线对称的两点权值统一加在...原创 2014-07-23 20:32:48 · 643 阅读 · 0 评论 -
UVALive 5116 Dividing Stones(dfs + 打表)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3117题目大意:把一个数N(N<70),分成几个数和的形式,再把这几个数相乘,问有多少种不同的乘积(种数对p取模)?思路:除1外的任何数都...原创 2014-08-03 21:44:13 · 981 阅读 · 0 评论 -
POJ 3057 Evacuation (二分图匹配)
题目链接:http://poj.org/problem?id=3057题意:在一个X * Y的区域内,每个点可能是墙壁,门,空区域的人,现在房间起火了,每个门每秒只允许一个人通过,每个人每秒只能移动一步,求最后一个人逃脱的最短时间,如果有人无法逃脱,输出"impossible"思路:由于每秒只能通过一个人,所以不能广搜最大值作为答案,考虑一个门,能在时间t内逃脱的人,是在距离门t以内...原创 2014-08-14 11:30:44 · 1085 阅读 · 0 评论 -
HDU 4751 Divide Groups (二分图)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4751题意:就是问能否将所有人分成两个集合,两集合内部的人都相互认识,注意A认识B,B认识C,C不一定认识A,且A认识B,B未必认识A思路:构建一张补图,在彼此无边或单向边连接的两点间加双向边,那么这张图必须是二分图(因为如果点染上三种不同颜色,那么便说明至少要三个集合),否则便不存...原创 2014-09-18 16:23:05 · 482 阅读 · 0 评论 -
HDU 4750 Count The Pairs (最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4750题意:给定一个边权都不一样的图,然后给出10W个询问,每个询问有个T,求图中任意两点所有路径中满足最长边中的最小值(瓶颈边)大于等于T的(s,t)对数思路:按kruskal的顺序合并边,每次合并边,可以发现每次合并的那条边,就是连接两个集合的瓶颈路(最小生成树中边权最大那条边)...原创 2014-09-19 14:36:24 · 447 阅读 · 0 评论 -
HDU 4424 Conquer a New Region (最小生成树+贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4424题意:给你n个点,n-1条边,每条边有一个最大容量 c,现在规定i-j的路的最大负载量为i到j所经过的所有边的最小值,要你找一个中心点,使它到其他 n-1 个点的最大容量的和最大,然后输出这个最大值。思路:模拟kruskal算法的实现过程,先将边进行降序排列,这样每次选择的边就...原创 2014-09-19 15:17:52 · 517 阅读 · 0 评论 -
POJ 3692 Kindergarten (最大独立集)
题目链接:http://poj.org/problem?id=3692题意:已知班级有g个女孩和b个男孩,所有女生之间都相互认识,所有男生之间也相互认识,给出m对关系表示哪个女孩与哪个男孩认识。现在要选择一些学生来组成一个团,使得里面所有人都认识,求此团最大人数思路:和之前做过的一道题类似,以补图的形式进行建图,求最大独立集1.独立集:任意两点都不相连的顶点的集合2....原创 2014-09-19 17:20:07 · 476 阅读 · 0 评论 -
POJ 1679 The Unique MST (次小生成树)
题目链接:http://poj.org/problem?id=1679题意:就是判断最小生成树是否唯一思路:找出次小生成树,如果其权值和与MST权值和一样,便不唯一#include <cstdio>#include <cstring>#include <cstdlib>#include <iostream>...原创 2014-09-19 21:35:46 · 468 阅读 · 0 评论 -
HDU 4756 Install Air Conditioning(MST + 树形DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4756题意:给n个点,现在要使这n个点连通,并且要求代价最小。现在有2个点之间不能直接连通(除了第一个点),求最小代价。思路:和HDU4126差不多,思路基本借鉴于http://blog.csdn.net/ophunter_lcm/article/details/12030593...原创 2014-09-25 23:30:13 · 776 阅读 · 0 评论 -
HDU 2586 How far away ?(LCA)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586题意:就是给你边和询问,每次询问给出两点,询问两点间距思路:可以转化为LCA,这样每次计算两点距离则为dis[x] + dis[y] - 2 * dis[z] (z为祖先,dis为到根节点的距离),使用的是离线算法这题因为对模板不熟,在询问时加了反向询问边,在去重时WA了一...原创 2014-09-26 17:46:15 · 401 阅读 · 0 评论 -
ZOJ 3656 Bit Magic (2-SAT)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3656题意:b[i][j] 与a[i], a[j]的关系如下。现在已知b,问是否存在对应的a,若存在输出YES,否则输出NOvoid calculate(int a[N], int b[N][N]) { for (int i = 0; i <...原创 2014-10-01 23:10:59 · 520 阅读 · 0 评论 -
LA 3211 Now or later (2-SAT + 二分)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1212题意:n 架飞机,每架飞机的降落时间有两个选择,一个为早点降落,另一个为晚点降落,求两架飞机降落时间差的最小值的最大值(就是使得所有飞机降落的...原创 2014-10-02 13:48:37 · 419 阅读 · 0 评论 -
HDU 5044 Tree(LCA)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5044题意:对于一棵树,可以进行两种操作:ADD1 U V K:将U到V结点路上的结点的权值都增加K;ADD2 U V K:将U到V结点路上的边的权值都增加K;最后输出所有点和所有边的权值。思路:思路出自http://blog.csdn.net/hongrock/article...原创 2014-10-03 16:22:08 · 686 阅读 · 0 评论 -
HDU 4607 Park Visit (树的直径)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4607题意:一棵树,问从任意点出发,每次访问k个点走过的最少的边数思路:求树的直径,如果树的直径 len + 1 >= k,那么访问直径上的点即可。否则则需要往树的分支上走一段距离,距离值为 2 * (k - len)树的直径:树的直径是指树的最长简单路。求...原创 2014-10-24 16:29:46 · 365 阅读 · 0 评论 -
HDU 4612 Warm up (树的直径 + 双联通)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4612题意:有N个点,M条边(有重边)的无向图,这样图中会可能有桥,问加一条边后,使桥最少,求该桥的数量思路:缩点后,求出图中的桥的个数,然后重建图必为树,求出树的最长直径,在该直径的两端点连一边,则图中的桥会最少#include <iostream>...原创 2014-10-25 14:57:35 · 550 阅读 · 0 评论 -
UVA11324 The Largest Clique (强联通 + DP)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=54643#problem/C题意:有一张有向图G 求一个节点数最大的节点集 其中任意2点 u和v 要么u 可以到v 要么v可以到u 要么相互可达思路:先用强联通缩点 每一个强连通分量都是可达的 求一条路径 路径上的每个点的权值即是该强连通分量的节点数 求权最大...原创 2014-10-25 16:47:03 · 611 阅读 · 0 评论 -
ZOJ 3820 (树的直径 + 二分)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5374题意:给一颗树, 每条边的权值都是1, 问选取两个点, 使得树上所有点到最近的一个点的距离的最大值最小是多少思路:最大值最小,应该是用二分,而出于贪心,这两个点应该是在树的直径上,那么便对称式的二分距离树径端点距离为X的点,看是否能满足条件...原创 2014-10-26 20:21:45 · 605 阅读 · 0 评论 -
UVA 10600 ACM Contest and Blackout (次小生成树 Kruskal 封装)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=54643#problem/R题意及思路:求最小生成树及次小生成树 (Kruskal模板,找到两点间权值最大的那条边)#include<cstdio>#include<cmath>#include<cstring>...原创 2014-11-05 19:40:47 · 428 阅读 · 0 评论