hdu 1269 (强联通分量Tarjan入门)】的更多相关文章

迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10075    Accepted Submission(s): 4529 Problem Description 为 了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单 向的,就是说若称某通道连通…
Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1853    Accepted Submission(s): 608 Problem Description There are N bombs needing exploding. Each bomb has three attributes: exploding radius…
定义:在一张有向图中,两个点可以相互到达,则称这两个点强连通:一张有向图上任意两个点可以相互到达,则称这张图为强连通图:非强连通图有极大的强连通子图,成为强联通分量. 如图,{1},{6}分别是一个强连通分量,{2,3,4,5}是一个强连通分量.而Tarjan算法可用于求解强连通分量. Tarjan算法: Tarjan算法是基于深度优先搜索的算法,每个强连通分量都是搜索树中的一个子树. 实现:dfn[u]表示到u节点时的标记(时间戳),low[u]表示u所能走到的节点中,点的最小的次序号(dfn…
题目链接:https://vijos.org/p/1023 最近在练强联通分量,当然学的是tarjan算法 而这一道题虽然打着难度为3,且是tarjan算法的裸题出没在vijos里面 但其实并不是纯粹只需要tarjan求有几个强联通就可以过的(我以为这是所谓的裸题) 其实这题还需要对每一个强联通缩点,可能被所谓裸题误导的OIer们看不破这个 毕竟,这个样例数据也是坑啊,样例数据都可以说是无向图了,哪里还是什么有向图 所以样例数据不是万能的,但是没过样例数据是万万不能的 至于为什么缩点我们来想一想…
http://poj.org/problem?id=3592 题意 :给你一个n*m的矩阵,每个位置上都有一个字符,如果是数字代表这个地方有该数量的金矿,如果是*代表这个地方有传送带并且没有金矿,可以传送到指定的位置,如果是#代表该位置不可走,初始位置在左上角,只能向下或向右走,并且走到传送带的时候可选择是否传送.问当走出去的时候能获得的最大近况数是多少. 思路 :先将二维矩阵转化成一维的点建图,可以向下向右建图,而且传送带也可以建边,缩点之后再建边,最后用spfa求最长路. #include…
题目链接 题意 : 给你两个城市让你求最短距离,如果两个城市位于同一强连通分量中那距离为0. 思路 :强连通分量缩点之后,求最短路.以前写过,总感觉记忆不深,这次自己敲完再写了一遍. #include <cstdio> #include <cstring> #include <iostream> #include <vector> #include <stack> #include <queue> #include <algor…
//白书 321页 #include<iostream> #include<cstdio> #include<cstring> #include<vector> #include<stack> using namespace std; ; vector<int>g[maxn];//g保存原始图 int pre[maxn],lowlink[maxn],sccno[maxn],dfs_clock,scc_cnt; //pre[u]为节点u…
  为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通了A房间和B房间,只说明可以通过这个通道由A房间到达B房间,但并不说明通过它可以由B房间到达A房间.Gardon需要请你写个程序确认一下是否任意两个房间都是相互连通的,即:对于任意的i和j,至少存在一条路径可以从房间i到房间j,也存在一条路径可以从房间j到房间i.  Input 输入包含多组数据,输入的第一行有两个数:N和M,接下来…
知识讲解: 在代码里我们是围绕 low 和 dfn 来进行DFS,所以我们务必明白 low 和 dfn 是干什么的? 有什么用,这样才能掌握他.   1.  dfn[]  遍历到这个点的时间 2.  low[]  遍历到这个所能连接到的最短时间,说明那个最短时间可以遍历带他,他也可以走到那个最短时间. 3.  我们每次出栈的点就是一个强联通分量(这里建议观看一下课件里面的Tarjan求强联通算法的模拟过程).   #include<cstdio> #include<cstdlib>…
题目链接:http://poj.org/problem?id=1236 题意:给定一个表示n所学校网络连通关系的有向图.现要通过网络分发软件,规则是:若顶点u,v存在通路,发给u,则v可以通过网络从u接收到. 现要求解两个问题: TaskA: 最少分发给几个学校,就可以使所有的学校都能得到软件. TaskB: 最少增加几条边,就可以使得,发软件给任一学校,所有学校都可以收到. 思路:先进行强联通分量分解,然后缩点,并计算缩点后每个点的出度.入度.入度为0的点的总数为 a ,出度为0的点总数为 b…