博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[HDU] 1269 迷宫城堡-最简单的强连通分支题
阅读量:4360 次
发布时间:2019-06-07

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

题目链接:

方法:就是求强连通分支个数,为1就可以。

感想:《算法导论》上额强连通分支部分的定理证明有必要多理解。

代码:

View Code
#include
#include
using namespace std;//int const MAX =0x3f3f3f3f;int const MAX = 10005;struct Arc{ int vetex; Arc* nexttArc;};struct Node{ int x; Arc* firstArc;};Node* o_nodes[MAX];Node* r_nodes[MAX];bool visited[MAX];int n,m;void createArc(int x,int y,bool inO){ Arc* arc = (Arc*)(malloc(sizeof(Arc))); arc->vetex = y; if(inO) { if(o_nodes[x]->firstArc == NULL) arc->nexttArc=NULL; else arc->nexttArc=o_nodes[x]->firstArc; o_nodes[x]->firstArc = arc; } else { if(r_nodes[x]->firstArc == NULL) arc->nexttArc=NULL; else arc->nexttArc=r_nodes[x]->firstArc; r_nodes[x]->firstArc = arc; }}void loadArc(int x,int y){ createArc(x,y,true); createArc(y,x,false);}int last = 0,traversedCount=0;void DFS(int root,bool inO=true){ Arc* t_arc; if(inO) t_arc = o_nodes[root]->firstArc; else t_arc = r_nodes[root]->firstArc; if(!visited[root] && !inO) traversedCount++; visited[root] = true; while(t_arc!=NULL) { if(!visited[t_arc->vetex]) DFS(t_arc->vetex,inO); t_arc = t_arc->nexttArc; } last = root; }int main(){ while(scanf("%d %d",&n,&m) && !(n==0 && m==0)) { memset(visited,false,sizeof(visited)); last = 0; traversedCount = 0; for(int i=1;i<=n;i++) { o_nodes[i] = (Node*)malloc(sizeof(Node)); r_nodes[i] = (Node*)malloc(sizeof(Node)); o_nodes[i]->firstArc = NULL; r_nodes[i]->firstArc = NULL; } int i = 1; int a,b; while(i<=m) { scanf("%d %d",&a,&b); loadArc(a,b); i++; } int count = 0; bool valid = true; for(i=1;i<=n;i++) { if(visited[i] == false) { if(count>0) { valid = false; break; } else { DFS(i,true); count++; } } } if(!valid) cout<<"No"<

 

转载于:https://www.cnblogs.com/kbyd/archive/2013/04/13/3019535.html

你可能感兴趣的文章
tp5任务队列使用supervisor常驻进程
查看>>
Xmind?
查看>>
spring+quartz 实现定时任务三
查看>>
day2-三级菜单
查看>>
linux下升级4.5.1版本gcc
查看>>
Beanutils
查看>>
FastJson
查看>>
excel4j
查看>>
Thread
查看>>
char * 与char []探究理解
查看>>
QT窗体显示在屏幕中间位置
查看>>
emmet使用技巧
查看>>
RPC-Thrift(二)
查看>>
MSSQL for Linux 安装指南
查看>>
【Golang 接口自动化08】使用标准库httptest完成HTTP请求的Mock测试
查看>>
前端必读:浏览器内部工作原理
查看>>
Uri、URL和URN三者的区别
查看>>
数据字典的转换
查看>>
关于动态添加iview admin路由以及刷新侧边栏
查看>>
ApplicationInsights的探测器尝鲜
查看>>