图论-强连通图
文章平均质量分 61
KIJamesQi
这个作者很懒,什么都没留下…
展开
-
uva12167等价性证明
思路:根据题目的意思,a,b,c,d等命题等价就是在推导(逻辑)上可以相互推导出对方,如a->b->c->d->a显然此时可以相互推导出来,把这个放到图上来看就是一个强连通分量, 题目问的是最少还需要添加几个关系可以是的图为一个等价图 == 强连通图; 那么我们就先把已经可以相互推导出来的点缩成一个点,然后就是一个DAG图了,加下来就是看入度为0的点与出度为0 的点的个数了,注意原图已经连通的原创 2015-10-02 12:11:51 · 476 阅读 · 0 评论 -
hdu1827 Summer Holiday(scc应用)
因为联系是单向的,且具有传递性,所以一个边强连通分量里面最多只需要通知一个人,那么就取代价最小的那个。然后就缩成DAG图,找入度为0的点就好了。const int maxn = 1001; int head[maxn], pnt[maxn<<2], nxt[maxn<<2], ecnt; int dfn[maxn], low[maxn], depth; int indeg[maxn]; int Mi原创 2016-07-07 14:30:19 · 315 阅读 · 0 评论 -
poj2762 Going from u to v or from v to u?
对于任意两个点x,y要存在一条x->y或者y->x的路径。显然是缩点然后判断是不是一条链。const int maxn = 1010; int n, m; vector<vector<int> > G; int dfn[maxn], low[maxn], depth; int belong[maxn], block; int in[maxn], mark[maxn]; stack<int> st;原创 2016-07-04 14:41:39 · 360 阅读 · 0 评论 -
hdu3639 Hawk-and-Chicken
题目大意n个人相互投票,这投票关系是可以传递的。A投B,B投C,那么C就获得了两票。 分析同一个强连通分量的人的票数等于点数减一。 现在就缩点,然后逆向建图,从入度为0的点开始搜索。 题目链接/***************************************** Author :Crazy_AC(JamesQi) Time :2016/5/25 File Nam原创 2016-05-25 22:08:34 · 630 阅读 · 0 评论 -
hdu3861The King’s Problem
题目意思就是一个国家有n个城市,里面的道路都是单向的,现在国王要把国家分割成区域,要求的就是,每个区域里面的点u、v,u到v可达或者是v到u可达。求最少要分隔成几个区域。 显然就是最小路径覆盖问题,只是要缩点。 /***************************************** Author :Crazy_AC(JamesQi) Time :2015原创 2016-02-01 23:37:20 · 393 阅读 · 0 评论 -
lightoj 1429 - Assassin`s Creed (II)
题意就是一个组织要杀人,道路是单向的,一个杀人者可以沿着某条路把所经过的点上的人全部杀完,点是可以重复经过的。 问最少需要几个杀人者可以把所有的n个点上的人杀完。。。 这题的难点在于点可以重复经过,而且图中含有环。。。。。 环其实容易想到缩点,,,只是点重复经过怎么处理,因为要用二分图的性质的话,里面的边石不能重复的,所以这里的处理就是添加边进去,如果原图中u到v是可达的,那么u到v就新建一原创 2016-01-31 17:26:18 · 721 阅读 · 0 评论 -
uva11721 Instant View of Big Bang
题意:大意就是有很多虫洞,他们之间存在有向通道,可能把时间提前,也可能往后,,,一个科学家想要回到很早很早之前,,,问从那些冲动出发可以满足条件。显然要回到很久以前必然要到达某个负环,首先要找到负环,然后再找哪些冲动可以到达这个负环,,,这题最大的难点就是建图,对于负环而言,无论是反向建边还是正向建边,,这个不影响,,,如果反向建边,,,,那么就可以从找点到负环变成了负环可达的问题了,,,这样一来原创 2015-11-24 19:43:44 · 408 阅读 · 0 评论 -
lightoj1210Efficient Traffic System
思路:给定一个有向图,问至少需要添加几条有向边可以使得图成为一个强连通图。 显然是需要缩点的,因为一个环上的点是可以互达的,可以看成一个点,如果图本 身就是强连通的输出0,因为不需要添加。否则就看缩点后每个点的入度与出度。 没有出的,要添加,没有入的要添加,,,这里就去其最大值(因为没有入的可以 和没有出的点之间加边,剩下的就要和其他任何点之间建边了)。 // #pragma comme原创 2015-11-16 20:52:17 · 384 阅读 · 0 评论 -
lightoj1003 Drunk
思路:判断途中是否有环,有就是Yes,否则就是No。 求个scc就好了,水题。 // #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include原创 2015-11-16 19:02:25 · 354 阅读 · 0 评论 -
uva11324(tarjan缩点 + DAG图上的简单dp)
思路:先缩点,再构图,最后dp。dp[u] = max(dp[u],dfs(v) + val[u]); #include #include #include #include #include using namespace std; const int maxn = 1e3 + 10; int low[maxn],pre[maxn],sccno[maxn]; int scc_cnt,原创 2015-10-02 14:03:07 · 1261 阅读 · 0 评论 -
lightoj 1168-Wishing Snake(Tarjan的应用)
题意从起点出发,一条路径经过所有点。 分析因为是有向图,且点是可以重复经过的,所以就会想到强连通分量,分量里面的点是相互可达的,可以看成一个点,这样就可以 缩点了。缩点后的图形成一条简单的链且链头是0号点即可。 int nCase = 0; int dcmp(double x){//精度正负、0的判断 if (fabs(x) < eps) return 0; return x < 0原创 2016-06-22 16:00:34 · 479 阅读 · 0 评论