zoukankan      html  css  js  c++  java
  • HDU 1269 迷宫城堡(强连通)

    HDU 1269 迷宫城堡

    题目链接

    题意:中文题

    思路:强连通模板题

    代码:

    #include <cstdio>
    #include <cstring>
    #include <vector>
    #include <stack>
    using namespace std;
    
    const int N = 10005;
    
    int n, m;
    vector<int> g[N], scc[N];
    int pre[N], lowlink[N], sccno[N], dfs_clock, scc_cnt;
    stack<int> S;
    
    void dfs_scc(int u) {
    	pre[u] = lowlink[u] = ++dfs_clock;
    	S.push(u);
    	for (int i = 0; i < g[u].size(); i++) {
    		int v = g[u][i];
    		if (!pre[v]) {
    			dfs_scc(v);
    			lowlink[u] = min(lowlink[u], lowlink[v]);
    		} else if (!sccno[v])
    			lowlink[u] = min(lowlink[u], pre[v]);
    	}
    	if (lowlink[u] == pre[u]) {
    		scc_cnt++;
    		int x = S.top();
    		while (x != u) {
    			sccno[x] = scc_cnt;
    			S.pop();
    			x = S.top();
    		}
    	}
    }
    
    void find_scc(int n) {
    	dfs_clock = scc_cnt = 0;
    	memset(sccno, 0, sizeof(sccno));
    	memset(pre, 0, sizeof(pre));
    	for (int i = 1; i <= n; i++)
    		if (!pre[i]) dfs_scc(i);
    }
    
    int main() {
    	while (~scanf("%d%d", &n, &m) && n || m) {
    		int u, v;
    		for (int i = 1; i <= n; i++) g[i].clear();
    		while (m--) {
    			scanf("%d%d", &u, &v);
    			g[u].push_back(v);
    		}
    		find_scc(n);
    		if (scc_cnt <= 1) printf("Yes
    ");
    		else printf("No
    ");
    	}
    	return 0;
    }


  • 相关阅读:
    Lamp环境搭建
    jquery之下拉列表select
    jquery之radio
    php连接postgresql
    ipython的notebook
    python连接postgresql数据库
    django最简单表单入门
    css制作简单下拉菜单
    下拉列表简单操作
    css制作最简单导航栏
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5076823.html
Copyright © 2011-2022 走看看