题意:定义域属于一个集合S={0,1,...,n-1},求S的子集个数,满足以子集的元素为定义域的函数P(x)的值域等于子集本身。思路:以元素为点,x到P(x)连一条有向边,不难发现,如果有一个有向环,那么环上的元素构成的集合就满足要求。所以问题转化为求有向环的个数,由于有向环之间不可能有交点(同一...
分类:
其他好文 时间:
2015-05-12 01:38:47
阅读次数:
125
题意:有n个学校,学校之间可以传递信息,为单向传递。
问题一:至少要向几个学校传递原始信息,才能保证所有学校都能收到信息。
问题二:至少要添加多少组关系(每组关系类型如右:a 可以 向 b 传递信息),才能保证 给任意一个学校原始信息后,其他所有学校都能收到信息。
思路:这道题其实就是一个有n个顶点的有向图,先用 Tarjan 算法缩点 , 然后分别统计出 入度为0 和 出度为0 的强连通分量个数 num1 和 num2,那么, 问题一的答案就是 num1 , 问题二的答案就是 max(num1 , nu...
分类:
Web程序 时间:
2015-05-10 09:50:36
阅读次数:
121
题意:间谍在战争时期想要传递一份邮件回国,邮件可以在各个邮局之间传播,但传递是单向的,并且耗时,如果两个邮局在一个国家的话,那么邮件在他们之间的传递不用耗时,判断两个邮局是否在一个国家的标准是两个邮局可以互相传递邮件。给出两个邮局,输出最短的到达时间。
思路:强连通分量+缩点+拓扑排序+DAG最短路。...
分类:
编程语言 时间:
2015-05-10 09:50:11
阅读次数:
148
题意:
给n对炸弹可以放置的位置(每个位置为一个二维平面上的点),每次放置炸弹是时只能选择这一对中的其中一个点,每个炸弹爆炸的范围半径都一样,控制爆炸的半径使得所有的爆炸范围都不相交(可以相切),求解这个最大半径.
思路:二分半径,建图再2-sat判有无解。
收获:原来tarjan执行后,在同一个强连通分量里的low[]也不一定相同,我以为一定相同,直接用low来是否在一个判...
分类:
其他好文 时间:
2015-05-05 14:34:24
阅读次数:
128
强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图,称为强连通分量。
把一个图变为一个强连通图需要添加边数:先求出原图的强连通分量,缩点后变为有向无环图,计算新图入度为0的点的个数SumIn和出度为0的点的个数SumOut,...
分类:
其他好文 时间:
2015-05-05 14:32:38
阅读次数:
188
分析:首先求强连通分量的个数,然后进行缩点,最后求出最终答案。
1、求强连通分量的个数使用tarjan算法。
2、缩点为另外一个图,通过tarjan算法求出的结果进行。缩点后的图中求出每个点的入度。
3、求出每个强连通分量中的最小花费。
4、根据缩点后图的入度求出最终结果。
#include
#include
#include
using namespace std;
vect...
分类:
编程语言 时间:
2015-04-25 15:12:01
阅读次数:
182
分析:本题判断一个图是否是有向强连通分量,这里使用tarjan算法求解。
#include
#include
#include
using namespace std;
vector map[10002];
stack tarjan_stack;
int low[10002];
int dfn[10002];
bool vis[10002];
int cnt,pos;
void Init(i...
分类:
编程语言 时间:
2015-04-25 13:46:55
阅读次数:
150
题目大意:
n个间谍 他们之间传送信息需要一定的时间一个联通分量里面的间谍属于一个国家,之间的信息传递不需要时间然后问你从一个间谍传一个信息到另一个间谍那需要最少时间 也可能传不到
思路:先缩点,再最短路,由于n最大只有500.可以用邻接矩阵,而且对缩点后的DAG的边权可以做贪心处理,只留两个强连通分量间的最短边长即可。
//2852K 297MS C++ 2595B
#include
...
分类:
其他好文 时间:
2015-04-24 09:08:58
阅读次数:
147
题意:本题描述了一片滑雪场,并且规定奶牛从一个点只能向它相邻的并且高度不大于它的点运动,现在想要在某些点对之间加上缆车使得奶牛也可以从较低点到达较高点,问最少需要多少辆这样的缆车就可以使得奶牛可以从任意一个点运动到滑雪场的每个角落。
思路:即问至少加多少条边使图变成强联通图,先缩点成DAG。
不难知道强连通分量的所有节点的入度和出度均不为0,可以统计DAG上的入度和出度为0的个数分别是a,b。...
分类:
其他好文 时间:
2015-04-19 06:33:22
阅读次数:
205