SCC重新建图
Tarjan或Kosaraju算法【对每个点归类belong】求出SCC之后,对num_scc个SCC重新建图,针对不同问题,考虑重边的问题。
//**************************************重构图****************************************//
void init_rebuild(void)
{
rebuild_ALG->n=num_scc;
for(int i=;i<=num_scc;i++)
{
rebuild_ALG->vlist[i].vertex=i;
rebuild_ALG->vlist[i].firstedge=NULL; in_d[i]=;
out_d[i]=;
}
} void add_edge_To_ALG(int par,int son)
{
ENode *ptr=(ENode *)malloc(sizeof(ENode)); ptr->key=son;
ptr->next=rebuild_ALG->vlist[par].firstedge;
rebuild_ALG->vlist[par].firstedge=ptr;
} void rebuild_ALGraph(void)
{
int par,son;
int in_par_scc; //判断是否已在par的scc中
ENode *ptr=(ENode *)malloc(sizeof(ENode));
ENode *ep=(ENode *)malloc(sizeof(ENode)); for(int i=;i<ALG->n;i++)
{
par=i;
in_par_scc=;
ptr=ALG->vlist[par].firstedge;
while(ptr!=NULL)
{
son=ptr->key;
if(belong[par] != belong[son])
{
ep=rebuild_ALG->vlist[belong[par]].firstedge;//考虑重边问题
while(ep!=NULL)
{
if(ep->key == belong[son])
{
in_par_scc=;
break;
}
ep=ep->next;
}
if(!in_par_scc)
{
add_edge_To_ALG(belong[par],belong[son]);
in_d[belong[son]]++;
out_d[belong[par]]++;
}
}
ptr=ptr->next;
}
}
}
//***************************************************************************//
SCC重新建图的更多相关文章
- poj2767,单向连通图判定,缩点+重新建图+新图DFS
/*该题被博客里标记为中等题,30分钟内1A,掌握了算法就简单了,单向连通图判定,单向连通图缩点 后必然唯一存在出度为0的点和入度为0的点,并且从入度为0的点出发,可以遍历所有点后到达出度为0点 (一 ...
- POJ 3592--Instantaneous Transference【SCC缩点新建图 && SPFA求最长路 && 经典】
Instantaneous Transference Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 6177 Accep ...
- NX二次开发-UFUN重命名图纸页UF_DRAW_rename_drawing
#include <uf.h> #include <uf_draw.h> #include <uf_drf.h> #include <uf_obj.h> ...
- POJ 2762--Going from u to v or from v to u?【scc缩点新建图 && 推断是否是弱连通图】
Going from u to v or from v to u? Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 15755 ...
- React Native 重新建项目遇到的一些问题
1.基本上一句话,就是本地的node太旧了,跟不上React_Native的节奏,所以需要更新node,但是单纯的更新node丫丫竟然不让我跟,因为是用Homebrew来管理的,所以先update了下 ...
- 201803020001-多重MACD图.png
- P3916 图的遍历
题目描述 给出 NNN 个点, MMM 条边的有向图,对于每个点 vvv ,求 A(v)A(v)A(v) 表示从点 vvv 出发,能到达的编号最大的点. 输入输出格式 输入格式: 第1 行,2 个整数 ...
- [POJ2404]Jogging Trails(中国旅行商问题)(一般图的匹配——状压DP)
题目:http://poj.org/problem?id=2404 题意:有个n(n<=15)的点和m条无向边,每条边都有自己的权值.现在你要从某个点出发,每条边可以经过多次但要保证每条边至少走 ...
- BZOJ-1305 dance跳舞 建图+最大流+二分判定
跟随YveH的脚步又做了道网络流...%%% 1305: [CQOI2009]dance跳舞 Time Limit: 5 Sec Memory Limit: 162 MB Submit: 2119 S ...
随机推荐
- Android学习笔记50:使用WebView控件浏览网页
在Android中,可以使用Webview控件来浏览网页.通过使用该控件,我们可以自制一个简单的浏览器,运行效果如图1所示. 图1 运行效果 1.WebView 在使用WebView控件时,首先需要在 ...
- 一则JVM memory leak解决的过程
起因是我们的集群应用(3台机器)新版本测试过程中,一般的JVM内存占用 都在1G左右, 但在运行了一段时间后,慢慢升到了4G, 这是一个明显不正常的现象. 定位 过程: 1.先在该机器上按照步骤尝试重 ...
- 给UINavigationBar自定义颜色
self.navigationController.navigationBar.barTintColor = RGB(55, 46, 41);
- 每天一个linux命令(51):lsof命令
lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 ...
- Atitit Immutability 和final的优点
Atitit Immutability 和final的优点 什么是 immutability? 其实细分起来有语法上的 immutable (例如 Java 里的 final 关键字), 和运行时对象 ...
- rabbitmq消息队列——"路由"
在之前的教程中,我们创建了一个简单的日志系统.我们能够向许多交换器转发日志消息. 在本教程中,我们将添加一个功能--我们让它仅仅接收我们感兴趣的日志类别.举例:我们 实现仅将严重级别的错误日志写入磁盘 ...
- fir.im Weekly - 热门 iOS 第三方库大盘点
本期 fir.im Weekly 收集的热度资源,大部分关于Android.iOS 开发工具.源码和脑洞大开的 UI 动画,希望给你带来更多的工作创意与灵感. 盘点国内程序员不常用的热门iOS第三方库 ...
- Sublime Text配置Python开发利器
Sublime Text配置Python开发利器 收好了 自动提示 jedi 代码格式化 Python PEP8 autoformat 如果还需要在shell中搞搞研究的话,ipython将是很好的选 ...
- 深入理解PHP内核(十一)函数-函数的内部结构
原文链接:http://www.orlion.ga/330/ php的函数包括用户定义的函数.内部函数(print_r count…).匿名函数.变量函数($func = 'print_r'; $fu ...
- Android listview addHeaderView 和 addFooterView 详解
addHeaderView()方法:主要是向listView的头部添加布局addFooterView()方法:主要是向listView的底部添加布局 需要注意的是添加布局的时候应该添加从父容器开始添加 ...