zoukankan      html  css  js  c++  java
  • Light OJ 1026

    题目大意:双向联通图, 现在求减少任意一边使图的联通性改变,按照起点从小到大列出所有这样的边

    解题思路:双向边模版题 tarjan算法

    代码如下:

    #include<bits/stdc++.h>
    using namespace std;
    
    const int N = 100003;
    vector<int>vec[N];
    pair<int, int>edge[N];
    int dfn[N], low[N];
    int res, ans;
    
    void tarjan(int u, int f)
    {
        dfn[u] = low[u] = res ++;
        for(int i = 0; i < vec[u].size(); ++ i)
        {
            int v = vec[u][i];
            if(dfn[v] == -1)
            {
                tarjan(v, u);
                low[u] = min(low[u], low[v]);
            }
            else if(f != v)
                low[u] = min(low[u], dfn[v]);
    
            if(dfn[u] < low[v])
            {
                if(u > v)
                    edge[ans ++] = make_pair(v, u);
                else
                    edge[ans ++] = make_pair(u, v);
            }
        }
    }
    
    void solve(int cases)
    {
        for(int i = 0; i < N; ++ i)
            vec[i].clear();
    
        int n;
        scanf("%d", &n);
    
        for(int i = 0; i < n; ++ i)
        {
            int a, b, c;
            scanf("%d (%d)", &a, &b);
            for(int j = 1; j <= b; ++ j)
            {
                scanf("%d", &c);
                vec[a].push_back(c);
            }
        }
    
        memset(dfn, -1, sizeof(dfn));
        memset(low, -1, sizeof(low));
    
        ans = res = 0;
        for(int i = 0; i < n; ++ i)
        {
            if(dfn[i] == -1)
                tarjan(i, -1);
        }
        sort(edge, edge+ans);
        printf("Case %d:
    ", cases);
        printf("%d critical links
    ", ans);
        for(int i=0; i<ans; ++ i)
            printf("%d - %d
    ", edge[i].first, edge[i].second);
    }
    
    int main()
    {
        int T;
        scanf("%d", &T);
        for(int i = 1; i <= T; ++ i)
            solve(i);
        return 0;
    }
    View Code
  • 相关阅读:
    c# WF 第11节 RichTextBox
    c# WF 第10节 textbox 控件
    c# WF 第9节 button控件
    c# WF 第8节 label控件
    c# WF 第7节 对控件的基本操作
    c# WF 第6节 MDI窗体
    c# WF 第5节 窗体的控件
    Python接口自动化之动态数据处理
    Saturn分布式调度之系统架构简介
    Jmeter系列之接口依赖
  • 原文地址:https://www.cnblogs.com/aiterator/p/5925436.html
Copyright © 2011-2022 走看看