找出强连通分量,缩点后统计入度为0的结点数。

//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<iostream>
#include<sstream>
#include<cmath>
#include<climits>
#include<string>
#include<map>
#include<queue>
#include<vector>
#include<stack>
#include<set>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
#define pb(a) push(a)
#define INF 0x1f1f1f1f
#define lson idx<<1,l,mid
#define rson idx<<1|1,mid+1,r
#define PI  3.1415926535898
template<class T> T min(const T& a,const T& b,const T& c) {return min(min(a,b),min(a,c));
}
template<class T> T max(const T& a,const T& b,const T& c) {return max(max(a,b),max(a,c));
}
void debug() {
#ifdef ONLINE_JUDGE
#elsefreopen("d:\\in1.txt","r",stdin);freopen("d:\\out1.txt","w",stdout);
#endif
}
int getch() {int ch;while((ch=getchar())!=EOF) {if(ch!=' '&&ch!='\n')return ch;}return EOF;
}
const int maxn=111222;
int pre[maxn],lowlink[maxn],sccno[maxn],scc_cnt,dfs_clock;
int deg[maxn];
vector<int> g[maxn];
stack<int> s;void dfs(int u)
{lowlink[u]=pre[u]=++dfs_clock;s.push(u);for(int i=0;i<g[u].size();i++){int v=g[u][i];if(!pre[v]){dfs(v);lowlink[u]=min(lowlink[u],lowlink[v]);}else if(!sccno[v])lowlink[u]=min(lowlink[u],lowlink[v]);}if(lowlink[u]==pre[u]){scc_cnt++;while(1){int x=s.top();s.pop();sccno[x]=scc_cnt;if(x==u)break;}}
}void find_scc(int n)
{memset(pre,0,sizeof(pre));memset(sccno,0,sizeof(sccno));dfs_clock=scc_cnt=0;for(int i=1;i<=n;i++)if(!pre[i])dfs(i);
}int main()
{int t;scanf("%d",&t);for(int ca=1;ca<=t;ca++){int n,m;scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)g[i].clear();for(int i=1;i<=m;i++){int u,v;scanf("%d%d",&u,&v);g[u].push_back(v);}find_scc(n);memset(deg,0,sizeof(deg));for(int i=1;i<=n;i++){for(int j=0;j<g[i].size();j++){int u=i,v=g[i][j];if(sccno[u]!=sccno[v])deg[sccno[v]]=1;}}int num=0;for(int i=1;i<=scc_cnt;i++)if(!deg[i])num++;printf("%d\n",num);}return 0;
}

View Code

转载于:https://www.cnblogs.com/BMan/p/3619318.html

UVA 11504 Dominos 强连通分量相关推荐

  1. The Largest Clique UVA - 11324( 强连通分量 + dp最长路)

    这题  我刚开始想的是  缩点后  求出入度和出度为0 的点  然后统计个数  用总个数 减去 然而 这样是不可以的  画个图就明白了... 如果  减去度为0的点  那么最后如果出现这样的情况是不可 ...

  2. Uva 247 - Calling Circles(传递闭包 / 强连通分量)

    题目链接 https://vjudge.net/problem/UVA-247 [题意] 如果两个人直接或间接互相打电话,则说明他们在同一个电话圈里.例如a打给b,b打给c,c打给d,d打给a,则这4 ...

  3. UVA 1324 The Largest Clique 最大团(强连通分量,变形)

    题意:给一个有向图,要求找出一些点,使得这些点中的任意点对,要么可以互通,要么单向可达. 思路:最低只要求单向可达即可,即a->b都可以算进去. 强连通分量内的点肯定是满足要求的,可以全选,但是 ...

  4. 有向图的强连通分量,割点与桥

    有向图的强连通分量 1.Tarjan /* Tarjan算法 复杂度O(N+M) */ #include<iostream> #include<stdio.h> #includ ...

  5. 【C++】强连通分量

    强连通分量 先来一题例题 题目大意 怎么做? 分析 结论 不要高兴得太早 怎么办呢? 定义 缩点法 原图构建新图 发现 新的结论 强连通分量算法 Kosaraju算法 Tarjan算法 例题:信息传递 ...

  6. 极小连通子图和极大连通子图_强连通分量与拓扑排序

    前言 由于GacUI里面开始多处用上拓扑排序,我决定把之前瞎JB搞出来的算法换掉,换成个正式的.之前我自己弄了个写起来很简单的算法,然后每一处需要用到的地方我就重新做一遍.当然这样肯定也是不行的,我觉 ...

  7. Tarjan算法应用 (割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)问题)...

    转载自:http://hi.baidu.com/lydrainbowcat/blog/item/2194090a96bbed2db1351de8.html 基本概念: 1.割点:若删掉某点后,原连通图 ...

  8. HDU4635(强连通分量+Kosaraju算法)

    题意:给出一个有向图,最多添加多少条边使这个图依然不是强连通图:当这个图是强连通图时,输出-1: 求解思路:强连通分量求解: 强连通图:在有向图中,任意节点除法都可以到达其余所有节点,则称为强连通图. ...

  9. poj3352(强连通分量)

    题意:添加多少边才能使这个无向图为双连通分量. 注意:双连通分量适用于无向图:而强连通分量适用于有向图.但是这两个概念都是一样的. #include<iostream> #include& ...

最新文章

  1. 一月17日新生冬季练习赛解题报告B.函数问题
  2. linux awk命令使用示例
  3. 蓝桥杯java 算法训练 Torry的困惑(基本型)
  4. Python面试题总结(9)--高级特性
  5. spark整合MySQL
  6. mulitpartfile怎么接收不到值_光端机电源正常,但是运行不了怎么办?
  7. Qt在Mac系统下添加alias到IncludePath中
  8. 《Spring实战》第一章 — Spring之旅
  9. 如何自学python-小白是如何自学Python逆袭成功的?
  10. 探索未来|一文看懂小米年度技术峰会 · 软件技术专场
  11. 参加神州英才执行力培训课程感悟
  12. 详讯:微软宣布446亿美元收购雅虎
  13. windows驱动签名
  14. 网站被qq拦截应该怎么处理
  15. 【Developer Log】ProGuard扰码web项目(WAR)
  16. 浙江咪咕MGV3200_KLH_国科GK6323_2+8_免拆机卡刷固件包
  17. 【无标题】绝对定位的特点
  18. Linux信号量(3)-内核信号量
  19. 用Python自动生成数据日报!
  20. 大数据产业驱动智慧家庭发展

热门文章

  1. 研发解决方案介绍#Tracing(鹰眼)
  2. 详解收发不畅原因及U-Mail邮件中继解决之道
  3. iis7.5+.net4.5 报404错误
  4. 商品条形码(JBarcode)Java版(二)
  5. getOutputStream() has already been called for this response异常的原因和解决方法[转]
  6. jquery 验证email
  7. Linux 命令(107)—— systemctl 命令
  8. Framework7——基础工具类
  9. webpack2中postcss-loader报错noconfigfound
  10. 权限组件之录入获取登入用户的所有权限