![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论-强连通图
文章平均质量分 61
KIJamesQi
这个作者很懒,什么都没留下…
展开
-
uva12167等价性证明
思路:根据题目的意思,a,b,c,d等命题等价就是在推导(逻辑)上可以相互推导出对方,如a->b->c->d->a显然此时可以相互推导出来,把这个放到图上来看就是一个强连通分量,题目问的是最少还需要添加几个关系可以是的图为一个等价图 == 强连通图;那么我们就先把已经可以相互推导出来的点缩成一个点,然后就是一个DAG图了,加下来就是看入度为0的点与出度为0 的点的个数了,注意原图已经连通的原创 2015-10-02 12:11:51 · 473 阅读 · 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 · 313 阅读 · 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 · 359 阅读 · 0 评论 -
hdu3639 Hawk-and-Chicken
题目大意n个人相互投票,这投票关系是可以传递的。A投B,B投C,那么C就获得了两票。分析同一个强连通分量的人的票数等于点数减一。现在就缩点,然后逆向建图,从入度为0的点开始搜索。题目链接/*****************************************Author :Crazy_AC(JamesQi)Time :2016/5/25File Nam原创 2016-05-25 22:08:34 · 629 阅读 · 0 评论 -
hdu3861The King’s Problem
题目意思就是一个国家有n个城市,里面的道路都是单向的,现在国王要把国家分割成区域,要求的就是,每个区域里面的点u、v,u到v可达或者是v到u可达。求最少要分隔成几个区域。显然就是最小路径覆盖问题,只是要缩点。/*****************************************Author :Crazy_AC(JamesQi)Time :2015原创 2016-02-01 23:37:20 · 391 阅读 · 0 评论 -
lightoj 1429 - Assassin`s Creed (II)
题意就是一个组织要杀人,道路是单向的,一个杀人者可以沿着某条路把所经过的点上的人全部杀完,点是可以重复经过的。问最少需要几个杀人者可以把所有的n个点上的人杀完。。。这题的难点在于点可以重复经过,而且图中含有环。。。。。环其实容易想到缩点,,,只是点重复经过怎么处理,因为要用二分图的性质的话,里面的边石不能重复的,所以这里的处理就是添加边进去,如果原图中u到v是可达的,那么u到v就新建一原创 2016-01-31 17:26:18 · 719 阅读 · 0 评论 -
uva11721 Instant View of Big Bang
题意:大意就是有很多虫洞,他们之间存在有向通道,可能把时间提前,也可能往后,,,一个科学家想要回到很早很早之前,,,问从那些冲动出发可以满足条件。显然要回到很久以前必然要到达某个负环,首先要找到负环,然后再找哪些冲动可以到达这个负环,,,这题最大的难点就是建图,对于负环而言,无论是反向建边还是正向建边,,这个不影响,,,如果反向建边,,,,那么就可以从找点到负环变成了负环可达的问题了,,,这样一来原创 2015-11-24 19:43:44 · 407 阅读 · 0 评论 -
lightoj1210Efficient Traffic System
思路:给定一个有向图,问至少需要添加几条有向边可以使得图成为一个强连通图。显然是需要缩点的,因为一个环上的点是可以互达的,可以看成一个点,如果图本身就是强连通的输出0,因为不需要添加。否则就看缩点后每个点的入度与出度。没有出的,要添加,没有入的要添加,,,这里就去其最大值(因为没有入的可以和没有出的点之间加边,剩下的就要和其他任何点之间建边了)。// #pragma comme原创 2015-11-16 20:52:17 · 381 阅读 · 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 · 353 阅读 · 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 · 1257 阅读 · 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 · 476 阅读 · 0 评论