[hdu1269]迷宫城堡(SCC)
题意:求一张图的强连通分量,若为1,则输出yes,否则输出no。
解题关键:targin算法模板题。
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<cstdlib> 5 #include<cmath> 6 #include<algorithm> 7 using namespace std; 8 typedef long long ll; 9 #define MAXN 10010 10 #define MAXM 100010 11 struct edge{ 12 int to,nxt; 13 }e[MAXM]; 14 15 int head[MAXN],st[MAXN],dfn[MAXN],lowest[MAXN],belong[MAXN]; 16 bool inst[MAXN]; 17 int n,m,scnt,top,tot; 18 void init(){ 19 memset(head,-1,sizeof head); 20 memset(dfn, 0, sizeof dfn); 21 scnt=top=tot=0; 22 } 23 24 void add_edge(int u, int v){ 25 e[tot].to=v; 26 e[tot].nxt=head[u]; 27 head[u]=tot++; 28 } 29 30 void Tarjan(int u){ 31 dfn[u]=lowest[u]=++tot; 32 inst[u]=1; 33 st[top++]=u; 34 for(int i=head[u];i!=-1;i=e[i].nxt){ 35 int v=e[i].to; 36 if(!dfn[v]){ 37 Tarjan(v); 38 lowest[u]=min(lowest[u],lowest[v]); 39 } 40 else if(inst[v]){ 41 lowest[u]=min(lowest[u],dfn[v]);//也可用lowest 42 } 43 } 44 if(dfn[u]==lowest[u]){ 45 scnt++; 46 int t; 47 do{ 48 t=st[--top]; 49 inst[t]=false; 50 belong[t]=scnt; 51 }while(t!=u); 52 } 53 } 54 55 inline int read(){ 56 char k=0;char ls;ls=getchar();for(;ls<'0'||ls>'9';k=ls,ls=getchar()); 57 int x=0;for(;ls>='0'&&ls<='9';ls=getchar())x=(x<<3)+(x<<1)+ls-'0'; 58 if(k=='-')x=0-x;return x; 59 } 60 61 62 void solve(){ 63 for(int i=1;i<=n;i++) 64 if(!dfn[i]) 65 Tarjan(i); 66 } 67 68 int main(){ 69 int a,b; 70 while(scanf("%d%d",&n,&m)&&(n||m)){ 71 init(); 72 while(m--){ 73 a=read(),b=read(); 74 add_edge(a,b); 75 } 76 solve(); 77 if(scnt==1) printf("Yes\n"); 78 else printf("No\n"); 79 } 80 return 0; 81 }
转载于:https://www.cnblogs.com/elpsycongroo/p/7477193.html
[hdu1269]迷宫城堡(SCC)相关推荐
- HDU1269 迷宫城堡(模板题)
HDU1269 迷宫城堡 文章目录 Problem Description 题解: Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N< ...
- hdu1269迷宫城堡(判断有向图是否是一个强连通图)
1 /* 题意: 给你一个图,求这个有向图示否是一个强连通图(每两个节点都是可以相互到达的)! 思路1:按正向边dfs一遍,将经过的节点计数,如果记录的节点的个数小于n,那么就说明图按照正向边就不是连 ...
- 【HDU - 1269】迷宫城堡 (tarjan算法模板)
题干: 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通了A房间和B房间,只 ...
- HDOJ1269(迷宫城堡)
迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 【HDU 1269】迷宫城堡 (Tarjan算法)
迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU 1269 迷宫城堡 -- 强连通图判断
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1269 图的强连通分量 http://baike.baidu.com/link?url=NqsmNsGC ...
- HDU 1269 迷宫城堡(强连通图的判定)
最近<算法导论>快看完图论部分了,很多有关图的算法都彻底搞懂并加以证明了.现在主要是将理解的思想用到题目中来加强下.这个题目主要是判断一下整个图是否是强连通的,很简单,可以用tarjan也 ...
- 迷宫城堡(HDU-1269)
Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若 ...
- 迷宫城堡——Tarjan
传送门HDU1269 描述 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通 ...
最新文章
- linux驱动由浅入深系列:高通sensor架构实例分析之一
- python中二进制表示_Python中的二进制搜索:直观介绍
- php $_server[remote_addr];,php – 如何伪造$_SERVER [‘REMOTE_ADDR’]变量?
- Timeline窗口详解
- go - str - byte
- tdav_converter_video.cxx:49:9: error: ‘uint8’ does not name a type; did you mean ‘uint’?
- java.math.BigDecimal详解及加减乘除计算
- WPS中word转pdf文件时给pdf文件增加目录
- Python for s60[1_pys60简介]
- 一图读懂昇思MindSpore · 图算融合 | 破而后立,晓喻新生
- linux格式化后恢复 vmdk恢复,根据flat.vmdk文件恢复磁盘(完善版)
- python3 获取商店里App评论+解析+存档+筛选
- 2月14日快到了, 把 ChatGPT 调教成了情诗王子, 为你守护你的爱情
- Java hashCode详解
- 美团外卖token解密(Java版)
- 一个div分上下两部分,上部分高度不固定,下面部分自动填满剩余高度
- 百度地图坐标反查html,通过百度地图api获得坐标或者反向查询地址
- 支持向量机SVM(二)
- 计算机技能大赛简讯内,科技节现场类比赛简讯
- jsonObject.toBean