HDU1269
来源:互联网 发布:rtu编程 编辑:程序博客网 时间:2024/06/07 11:02
迷宫城堡
题目链接
分类:
Graph
1.题目描述
- 给你一个图,要你判断图是否为强连通图。
2.解题思路
- 根据Tarjan算法,直接去强连通缩点,最后判断点是否为1就好了。
3.AC代码
#include <bits/stdc++.h>using namespace std;#define rep(i,a,n) for (int i=a;i<n;i++)#define per(i,a,n) for (int i=n-1;i>=a;i--)#define maxn 10010/* head */struct Edge { int to, next;} E[maxn << 1];int head[maxn], cnt;int dfn[maxn], low[maxn], s[maxn], belong[maxn], sec, top, scnt;bool inS[maxn];void init() { memset(head, -1, sizeof head); memset(dfn, 0, sizeof dfn); memset(low, 0, sizeof low); cnt = scnt = sec = top = 0;}void addedge(int u, int v) { E[cnt].to = v; E[cnt].next = head[u]; head[u] = cnt++;}void tarjan(int u) { dfn[u] = low[u] = ++sec; inS[u] = 1; s[top++] = u; for (int i = head[u]; ~i; i = E[i].next) { int v = E[i].to; if (!dfn[v]) { tarjan(v); low[u] = min(low[u], low[v]); } else if (inS[v] && low[u] > dfn[v]) low[u] = dfn[v]; } if (dfn[u] == low[u]) { ++scnt; int tmp; do { tmp = s[--top]; inS[tmp] = 0; belong[tmp] = scnt; } while (tmp != u); }}int main() {#ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); long _begin_time = clock();#endif int n, m; while (~scanf("%d%d", &n, &m) && m + n) { init(); while (m--) { int u, v; scanf("%d%d", &u, &v); addedge(u, v); } rep(i, 1, n + 1) { if (!dfn[i]) tarjan(i); } puts(scnt == 1 ? "Yes" : "No"); } return 0;}
阅读全文
0 0
- hdu1269
- hdu1269
- HDU1269
- HDU1269
- hdu1269
- hdu1269
- HDU1269
- hdu1269强连通模板
- hdu1269 迷宫城堡 (模板)
- HDU1269 强联通
- hdu1269 tarjan模板题
- hdu1269之tarjan
- hdu1269 迷宫城堡
- HDU1269(Tarjan算法)
- HDU1269-迷宫城堡
- hdu1269 强连通分量
- hdu1269 tarjan算法
- hdu1269(邻接表+dfs)
- Spring MVC中快速集成swagger2
- Oracle介绍(一)
- ionic3三种跳转方法对应的页面间数据传递及Events
- 基于HtmlUnit获取页面表格信息
- Cocos2dx Android工程的启动过程
- HDU1269
- 帮你全面彻底搞定MATERIAL DESIGN的学习笔记
- always模块的使用方法
- hdu 1176 免费馅饼 (动态规划)
- iOS 10 调用系统相册相机出现问题:-> 0x183a58d9c <+8>: b.lo 0x183a58db4 ; <+32>
- 博客迁移通知
- Hibernate注解之Entity
- Python Mock测试
- eclipse中重新设置tomcat的路径