hdu1269 强连通
题意:判断给定有向图中是否所有点都能够互相到达。
就是询问是否只有一个强连通分量。
- #include<stdio.h>
- #include<string.h>
- #include<stack>
- #include<queue>
- using namespace std;
- const int maxn=1e4+;
- const int maxm=1e5+;
- int head[maxn],point[maxm],nxt[maxm],size;
- int n,t,scccnt;
- int stx[maxn],low[maxn],scc[maxn];
- stack<int>S;
- void init(){
- memset(head,-,sizeof(head));
- size=;
- }
- void add(int a,int b){
- point[size]=b;
- nxt[size]=head[a];
- head[a]=size++;
- }
- void dfs(int s){
- stx[s]=low[s]=++t;
- S.push(s);
- for(int i=head[s];~i;i=nxt[i]){
- int j=point[i];
- if(!stx[j]){
- dfs(j);
- low[s]=min(low[s],low[j]);
- }
- else if(!scc[j]){
- low[s]=min(low[s],stx[j]);
- }
- }
- if(low[s]==stx[s]){
- scccnt++;
- while(){
- int u=S.top();S.pop();
- scc[u]=scccnt;
- if(s==u)break;
- }
- }
- }
- void setscc(){
- memset(stx,,sizeof(stx));
- memset(scc,,sizeof(scc));
- t=scccnt=;
- for(int i=;i<=n;++i)if(!stx[i])dfs(i);
- }
- int main(){
- int m;
- while(scanf("%d%d",&n,&m)!=EOF&&n+m){
- init();
- while(m--){
- int a,b;
- scanf("%d%d",&a,&b);
- add(a,b);
- }
- setscc();
- if(scccnt==)printf("Yes\n");
- else printf("No\n");
- }
- return ;
- }
hdu1269 强连通的更多相关文章
- hdu1269强连通分量入门题
https://vjudge.net/contest/156688#problem 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<= ...
- hdu1269(有向图强连通分量)
hdu1269 题意 判断对于任意两点是否都可以互相到达(判断有向图强连通分量个数是否为 1 ). 分析 Tarjan 算法实现. code #include<bits/stdc++.h> ...
- tarjan算法强连通分量的正确性解释+错误更新方法的解释!!!+hdu1269
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1269 以下内容为原创,转载请声明. 强连通分量SCC(Strongly Connected Compo ...
- HDU1269 迷宫城堡(裸强连通分量)
Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通了A ...
- hdu1269 有向图强连通 【Tarjan】(模板)
<题目链接> 题目大意: 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称 ...
- hdu1269迷宫城堡 (强连通Tarjan+邻接表)
Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每一个通道都是单向的,就是说 ...
- HDU1269 迷宫城堡 —— 强连通分量
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1269 迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) M ...
- HDU1269 有向图强连通分量
题目大意:问一个有向图是否任意两点在两个方向上互相连通. 有向图强连通分量定义:如果一个图中的任意两点在两个方向上都互相连通,则该图为强连通图.极大强连通图为有向图的强连通分量(注意是极大,不是最大. ...
- HDU1269迷宫城堡(裸Tarjan有向图求强连通分量个数)
迷宫城堡Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
随机推荐
- POJ 2559 Program C
Submit Status Practice POJ 2559 Description A histogram is a polygon composed of a sequence of recta ...
- 响应式架构:消息模式Actor实现与Scala、Akka应用集成
这是一本最近很流行的书. 有时间就去看看
- Oracle Database 11g express edition
commands : show sys connect sys as sysdba or connect system as sysdba logout or disc clear screen or ...
- dhtmlxScheduler日历日程控件包括天视图,周视图,月视图,年视图和日程表视图
dhtmlxScheduler 是一个基于Web的类似于Outlook的日历日程控件. 它完全由javascript/js/css编写, 提供类似于MS Outlook Calendar, Apple ...
- C++,1....n中随机等概率的输出m个不重复的数(假设n远大于m)。
#include <stdlib.h> #include <time.h> knuth(int n, int m) { srand((unsigned )); ; i < ...
- SQL Server CONVERT() 函数(转)
定义和用法 CONVERT() 函数是把日期转换为新数据类型的通用函数. CONVERT() 函数可以用不同的格式显示日期/时间数据. 语法 CONVERT(data_type(length),dat ...
- MySQL校对规则(三)
校对规则:在当前编码下,字符之间的比较顺序是什么? ci:不区分大小写,Cs区分大小写, _bin 编码比较 每个字符集都支持不定数量的校对规则,可以通过如下指令: show collation 可以 ...
- JS中阻止默认事件与事件冒泡
JQuery 提供了两种方式来阻止事件冒泡. 方式一:event.stopPropagation(); $("#div1").mousedown(function(event){ ...
- WebService的原理和过程
转自:http://blog.csdn.net/xiaoqiang081387/article/details/5694304 (一).XML WebService作用 XML WebService ...
- C# 展开和折叠代码的快捷键(总结)
C# 展开和折叠代码的快捷键 VS2005代码编辑器的展开和折叠代码确实很方便和实用.以下是展开代码和折叠代码所用到的快捷键,很常用: Ctrl + M + O: 折叠所有方法 Ctrl + M + ...