题意:求一张图的强连通分量,若为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)相关推荐

  1. HDU1269 迷宫城堡(模板题)

    HDU1269 迷宫城堡 文章目录 Problem Description 题解: Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N< ...

  2. hdu1269迷宫城堡(判断有向图是否是一个强连通图)

    1 /* 题意: 给你一个图,求这个有向图示否是一个强连通图(每两个节点都是可以相互到达的)! 思路1:按正向边dfs一遍,将经过的节点计数,如果记录的节点的个数小于n,那么就说明图按照正向边就不是连 ...

  3. 【HDU - 1269】迷宫城堡 (tarjan算法模板)

    题干: 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通了A房间和B房间,只 ...

  4. HDOJ1269(迷宫城堡)

    迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  5. 【HDU 1269】迷宫城堡 (Tarjan算法)

    迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  6. HDU 1269 迷宫城堡 -- 强连通图判断

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1269 图的强连通分量 http://baike.baidu.com/link?url=NqsmNsGC ...

  7. HDU 1269 迷宫城堡(强连通图的判定)

    最近<算法导论>快看完图论部分了,很多有关图的算法都彻底搞懂并加以证明了.现在主要是将理解的思想用到题目中来加强下.这个题目主要是判断一下整个图是否是强连通的,很简单,可以用tarjan也 ...

  8. 迷宫城堡(HDU-1269)

    Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若 ...

  9. 迷宫城堡——Tarjan

    传送门HDU1269 描述 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通 ...

最新文章

  1. linux驱动由浅入深系列:高通sensor架构实例分析之一
  2. python中二进制表示_Python中的二进制搜索:直观介绍
  3. php $_server[remote_addr];,php – 如何伪造$_SERVER [‘REMOTE_ADDR’]变量?
  4. Timeline窗口详解
  5. go - str - byte
  6. tdav_converter_video.cxx:49:9: error: ‘uint8’ does not name a type; did you mean ‘uint’?
  7. java.math.BigDecimal详解及加减乘除计算
  8. WPS中word转pdf文件时给pdf文件增加目录
  9. Python for s60[1_pys60简介]
  10. 一图读懂昇思MindSpore · 图算融合 | 破而后立,晓喻新生
  11. linux格式化后恢复 vmdk恢复,根据flat.vmdk文件恢复磁盘(完善版)
  12. python3 获取商店里App评论+解析+存档+筛选
  13. 2月14日快到了, 把 ChatGPT 调教成了情诗王子, 为你守护你的爱情
  14. Java hashCode详解
  15. 美团外卖token解密(Java版)
  16. 一个div分上下两部分,上部分高度不固定,下面部分自动填满剩余高度
  17. 百度地图坐标反查html,通过百度地图api获得坐标或者反向查询地址
  18. 支持向量机SVM(二)
  19. 计算机技能大赛简讯内,科技节现场类比赛简讯
  20. jsonObject.toBean

热门文章

  1. Python学习之路—初识Python
  2. .Net程序员学用Oracle系列(16):访问数据库(ODP.NET)
  3. JBoss Tools安装
  4. java 蓝桥杯 石子游戏(题解)
  5. php image处理,php 中图像压缩处理类(二)imageutil.php
  6. 浅谈Eclipse GEF
  7. Reactor线程模型
  8. (20)Xilinx PCIE中断调试成功(学无止境)
  9. (45)System Verilog数组乘积运算
  10. FPGA资源评估方法