POJ 1236 Network of Schools(强连通 Tarjan+缩点)
ACM
题目地址:POJ 1236
题意:
给定一张有向图,问最少选择几个点能遍历全图,以及最少添加几条边使得有向图成为一个强连通图。
分析:
跟HDU 2767 Proving Equivalences(题解)一样的题目,不过多了个问题,其实转化成DAG后就不难考虑了,其实只要选...
分类:
Web程序 时间:
2014-07-30 17:38:14
阅读次数:
252
先上代码:#include #include #include #include using namespace std;int G[1000][1000];int pre[1000],sccno[1000],lowlink[1000]; //sccno[u]:u节点所属于的强连通分量序号...
分类:
其他好文 时间:
2014-07-26 14:21:30
阅读次数:
238
用tarjan解hdu2586,稍微谈了这个算法的实现,欢迎讨论...
分类:
其他好文 时间:
2014-07-12 22:09:04
阅读次数:
178
迷宫城堡Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6655Accepted Submission(s): 2973Problem Descri...
分类:
其他好文 时间:
2014-07-12 14:18:30
阅读次数:
184
#include#include#includeusing namespace std;const int maxn=10010;vectorg[maxn];int Bcnt;int Top;int Index;int low[maxn],dfn[maxn];int belong[maxn],sta...
分类:
其他好文 时间:
2014-07-09 14:01:38
阅读次数:
163
本题也是找LCA的题目,不过要求多次查询,一般的暴力查询就必然超时了,故此必须使用更高级的方法,这里使用Tarjan算法。
本题处理Tarjan算法,似乎输入处理也挺麻烦的。
注意: 因为查询的数据会极大,故此使用一个数组记录所有查询数据就会超时的。我就载在这里了。查了好久才想到这点。因为我使用了一个vector容器记录了查询数据,故此每次都循环这组这么大的数据,就超时了。----解决办法:使...
分类:
其他好文 时间:
2014-07-09 11:08:22
阅读次数:
224
LCA tarjan 的离线算法
#include
#include
#include
using namespace std;
const int maxn = 40010;
int first[maxn], head[maxn], cnt, sum;
struct edge
{
int u, v, w, next;
}e[maxn*2], qe[maxn], Q[maxn];
int...
分类:
其他好文 时间:
2014-07-09 10:23:35
阅读次数:
256
题目:有一场婚礼,有n对夫妇参加,他们之间有些人之间有奸情(可能同性),在场的人中有一个公主,
她清楚其他人的人际关系,问能否安排座位使得两边都是n个人,且公主看不见有奸情的人同时在的对面。
分析:2-SAT。直接按照看的流程敲的程序。
1.建图,矛盾的点建立对应的边(与一直关系相反);
2.利用Tarjan算法计算...
分类:
其他好文 时间:
2014-07-08 12:52:46
阅读次数:
420
有向图强连通分量的Tarjan算法[有向图强连通分量]在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected ...
分类:
其他好文 时间:
2014-07-06 19:10:46
阅读次数:
230
首先tarjan缩点,重新建图后,每个点的权值就是该点包含点的个数。
然后从入度为0的点开始记忆化搜索,dp[i]表示以i为根最多包含多少点。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define e...
分类:
其他好文 时间:
2014-07-02 08:37:48
阅读次数:
211