uva 11504 - Dominos(强联通分量)
来源:互联网 发布:淘宝飞利浦官方旗舰店 编辑:程序博客网 时间:2024/05/18 15:27
题目链接:uva 11504 - Dominos
缩点,入度为0的点个数即为答案。
#include <cstdio>#include <cstring>#include <vector>#include <stack>#include <algorithm>using namespace std;const int maxn = 1e5 + 5;int N, M, in[maxn];int cntlock, cntscc, pre[maxn], sccno[maxn], low[maxn];vector<int> G[maxn];stack<int> S;void dfs (int u) {pre[u] = low[u] = ++cntlock;S.push(u);for (int i = 0; i < G[u].size(); i++) {int v = G[u][i];if (!pre[v]) {dfs(v);low[u] = min(low[u], low[v]);} else if (!sccno[v])low[u] = min(low[u], pre[v]);}if (low[u] == pre[u]) {cntscc++;while (true) {int x = S.top(); S.pop();sccno[x] = cntscc;if (x == u) break;}}}void findSCC() {cntlock = cntscc = 0;memset(pre, 0, sizeof(pre));memset(sccno, 0, sizeof(sccno));for (int i = 1; i <= N; i++)if (!pre[i]) dfs(i);}void init () {scanf("%d%d", &N, &M);for (int i = 1; i <= N; i++) G[i].clear();int u, v;while (M--) {scanf("%d%d", &u, &v);G[u].push_back(v);}findSCC();}int solve () {memset(in, 0, sizeof(in));for (int i = 1; i <= N; i++) {int u = sccno[i];for (int j = 0; j < G[i].size(); j++) {int v = sccno[G[i][j]];if (u != v) in[v] = 1;}}int ret = 0;for (int i = 1; i <= cntscc; i++)if (!in[i]) ret++;return ret;}int main () {int cas;scanf("%d", &cas);while (cas--) {init();printf("%d\n", solve());}return 0;}
0 0
- uva 11504 - Dominos(强联通分量)
- UVA 11504 - Dominos(强连通分量)
- UVA - 11504 Dominos 强连通分量
- (beginer)DFS (强连通)UVA 11504 Dominos
- UVa 11504 - Dominos(缩点)
- uva 11504 - Dominos (scc)
- UVa 11504 - Dominos
- tarjan模板(强联通分量)
- poj1236 强联通分量(tarjan)
- ZOJ 3620 Information(强联通分量)
- vijos1022(强联通分量模版题)
- HDU3836(强联通分量+思维)
- 强联通分量
- 强联通分量
- poj2375 强联通分量
- 强联通分量
- poj1904(强联通分量)
- 强联通分量
- Commando War(UVa 11729)
- 华为OJ平台试题 —— 整数排序
- TreeView常用操作 [不断添加]
- 设计一个可玩性与可重复性高的游戏关卡
- 深入讲解Android Property机制
- uva 11504 - Dominos(强联通分量)
- openlayers2 wfs方式加载矢量图层
- logistic和softmax原理、联系
- JAVA 配置环境变量
- poj1745(01背包)
- 白盒测试方法比较
- Poco数据库操作用户手册(一)
- 小白书之困难的串回溯
- 获取带滚动条的页面的位置,长宽等信息