博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
No.33 - POJ1523 邻接表Tarjan算法 找关节点
阅读量:4059 次
发布时间:2019-05-25

本文共 1807 字,大约阅读时间需要 6 分钟。

Tarjan算法核心:

void dfs(int now,int v){    V[now] = low[now] = v;    for(int i=pre[now];i!=0;i=E[i].pre){        if(V[E[i].to] == 0){            dfs(E[i].to,v+1);            low[now] = min(low[now],low[E[i].to]);            if(low[E[i].to] >= V[now]) sub[now]++;        }else{            low[now] = min(low[now],V[E[i].to]);        }    }}

这题有个很蛋疼的地方,题目没有说明,输出一定要按节点序号。

第一次输出直接dfs搜索的,也省的统计了,果断WA掉。

// ShellDawn// POJ1523// No.33#include
#include
#include
#include
#include
#include
#define MM(x,y) memset(x,y,sizeof(x))#define INF 0x3f3f3f3f#define LL long longusing namespace std;//#define maxn 1005int low[maxn]; // 能到达的最低层次int V[maxn]; // dfs层次int sub[maxn]; // 区块bool flag; // 是否有SPFstruct Edge{ int to; int pre;};Edge E[maxn*maxn];int pre[maxn];int cnt;void addE(int a,int b){ E[cnt].to = b; E[cnt].pre = pre[a]; pre[a] = cnt++; E[cnt].to = a; E[cnt].pre = pre[b]; pre[b] = cnt++;}void dfs(int now,int v){ V[now] = low[now] = v; for(int i=pre[now];i!=0;i=E[i].pre){ if(V[E[i].to] == 0){ dfs(E[i].to,v+1); low[now] = min(low[now],low[E[i].to]); if(low[E[i].to] >= V[now]) sub[now]++; }else{ low[now] = min(low[now],V[E[i].to]); } }}int main(){ //freopen("A.txt","r",stdin); int a,b; int T = 1; while(~scanf("%d",&a) && a){ if(T != 1) puts(""); printf("Network #%d\n",T++); cnt = 1; MM(pre,0); int N = 1; scanf("%d",&b); addE(a,b); N = max(N,a); N = max(N,b); while(~scanf("%d",&a) && a){ scanf("%d",&b); addE(a,b); N = max(N,a); N = max(N,b); } MM(V,0); MM(sub,0); MM(low,0); dfs(1,1); flag = false; if(sub[1] > 1){ flag = true; printf(" SPF node %d leaves %d subnets\n",1,sub[1]); } for(int i=2;i<=N;i++){ if(sub[i]!=0){ flag = true; printf(" SPF node %d leaves %d subnets\n",i,sub[i]+1); } } if(!flag) printf(" No SPF nodes\n"); } return 0;}

转载地址:http://snwji.baihongyu.com/

你可能感兴趣的文章
iOS 序列化与反序列化(runtime) 01
查看>>
iOS AFN 3.0版本前后区别 01
查看>>
iOS ASI和AFN有什么区别
查看>>
iOS QQ侧滑菜单(高仿)
查看>>
iOS 扫一扫功能开发
查看>>
iOS app之间的跳转以及传参数
查看>>
Android(三)数据存储之XML解析技术
查看>>
Spring JTA应用之JOTM配置
查看>>
spring JdbcTemplate 的若干问题
查看>>
Servlet和JSP的线程安全问题
查看>>
GBK编码下jQuery Ajax中文乱码终极暴力解决方案
查看>>
Oracle 物化视图
查看>>
PHP那点小事--三元运算符
查看>>
解决国内NPM安装依赖速度慢问题
查看>>
Brackets安装及常用插件安装
查看>>
Centos 7(Linux)环境下安装PHP(编译添加)相应动态扩展模块so(以openssl.so为例)
查看>>
fastcgi_param 详解
查看>>
Nginx配置文件(nginx.conf)配置详解
查看>>
标记一下
查看>>
IP报文格式学习笔记
查看>>