大意:让你求无向图的桥(割边)

思路:一次查询,重建一次图,然后求一次割边,TLE。去网上开了看资料,可以用LCA暴力查询,唔,改天看看LCA。

TLE CODE:

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;

#define MAXN 100010
#define MAXM 500010

struct Edge
{
    int v, next;
}edge[MAXM];

int first[MAXN], low[MAXN], dfn[MAXN];

int n, m;
int cnt;
int scnt, top, tot;
int nbridge;

void init1()
{
    cnt = 0;
    for(int i = 1; i <= n; i++) first[i] = -1;
}

void init2()
{
    scnt = top = tot = nbridge = 0;
    for(int i = 1; i <= n; i++) dfn[i] = 0;
}

void read_graph(int u, int v)
{
    edge[cnt].v = v;
    edge[cnt].next = first[u], first[u] = cnt++;
}

void Tarjan(int u, int fa)
{
    int v;
    low[u] = dfn[u] = ++tot;
    bool repeat = 0;
    for(int e = first[u]; e != -1; e = edge[e].next)
    {
        v = edge[e].v;
        if(v == fa && !repeat)
        {
            repeat = 1;
            continue;
        }
        if(!dfn[v])
        {
            Tarjan(v, u);
            low[u] = min(low[u], low[v]);
            if(dfn[u] < low[v]) nbridge++;
        }
        low[u] = min(low[u], dfn[v]);
    }
}

void solve()
{
    init2();
    Tarjan(1, -1);
    printf("%d\n", nbridge);
}

int main()
{
    int times = 0;
    while(scanf("%d%d", &n, &m) && (n || m))
    {
        init1();
        while(m--)
        {
            int u, v;
            scanf("%d%d", &u, &v);
            read_graph(u, v);
            read_graph(v, u);
        }
        int Q;
        scanf("%d", &Q);
        printf("Case %d:\n", ++times);
        while(Q--)
        {
            int u, v;
            scanf("%d%d", &u, &v);
            read_graph(u, v);
            read_graph(v, u);
            solve();
        }
        printf("\n");
    }
    return 0;
}

转载于:https://www.cnblogs.com/g0feng/archive/2012/11/04/2754245.html

POJ 3694 Network相关推荐

  1. 【割边缩点】解题报告:POJ - 3694 - Network(Tarjan割边缩点 + LCA + 并查集优化)

    POJ - 3694 - Network 给定一张N个点M条边的无向连通图,然后执行Q次操作,每次向图中添加一条边,并且询问当前无向图中"桥"的数量.N≤105,M≤2∗105,Q ...

  2. POJ - 3694 Network tanjar割边+lca

    题目链接 思路:跑一边tanjar将所有的割边u->v标记为cut[v]=true,表示u->v这条边为割边.然后记录总的割边数ans,每次从两个询问点暴力往上边在跑直到LCA,如果碰到c ...

  3. POJ 3694 Network ★(边双连通分量+并查集缩点+LCA)

    [题意]一个无向图可以有重边,下面q个操作,每次在两个点间连接一条有向边,每次连接后整个无向图还剩下多少桥(每次回答是在上一次连边的基础之上) [分析]好题,做完后涨了很多姿势~ 普通做法当然就是每加 ...

  4. POJ - 3694 Network(边双缩点+LCA+并查集优化)

    题目链接:点击查看 题目大意:给出一个由n个点组成的无向图,现在有m次操作,每次操作都会向图中增加一条无向边,每次操作后询问当前图中有多少个桥 题目分析:题意很好理解,思路也很好想,就是代码量有点小多 ...

  5. POJ 3694 Network(tarjan+lca+并查集)

    题目 给定一张NNN个点MMM条边的无向连通图,然后执行QQQ次操作,每次向图中添加一条边,并且询问当前无向图中"桥"的数量. 题解 先求出图中所有的边双,然后缩点 令c[x],c ...

  6. POJ 1236 Network of Schools(强连通 Tarjan+缩点)

    POJ 1236 Network of Schools(强连通 Tarjan+缩点) ACM 题目地址:POJ 1236 题意:  给定一张有向图,问最少选择几个点能遍历全图,以及最少加入�几条边使得 ...

  7. 【POJ - 3694】Network(对dfn求lca 或 缩点+lca 或 边双连通+并查集)

    题干: 网络管理员管理大型网络.该网络由N台计算机和成对计算机之间的M链路组成.任何一对计算机都通过连续的链接直接或间接连接,因此可以在任何两台计算机之间转换数据.管理员发现某些链接对网络至关重要,因 ...

  8. [tarjan] poj 1236 Network of Schools

    主题链接: http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS   Memory Limit: 10000K To ...

  9. POJ 1236 Network of Schools(tarjan)

    Network of Schools Description A number of schools are connected to a computer network. Agreements h ...

最新文章

  1. golang中图片转base64_golang base64编码
  2. Cisco QOS之CBWFQ
  3. java对文件的操作详解,java对各种文件的操作详解
  4. nginx反向代理原理简介
  5. 本来中午打算应付下随便吃点,可是连盐都没有放的辣椒炒蛋实在是令人不快...
  6. LeetCode 1817. 查找用户活跃分钟数(哈希)
  7. python控制流教程_Python入门教程之运算符与控制流
  8. 《Reids 设计与实现》第七章 RDB 持久化
  9. 又一辆特斯拉电动汽车撞上警车,都是因为这个功能
  10. Given two binary trees, write a function to check if they areequal or not.
  11. Linux的10个经典彩蛋
  12. 利用信鸽推送实现登录后强制退出的功能
  13. 39.安装PH5\PH7
  14. tyvj P1179 飘飘乎居士数列游戏
  15. 如何提升码代码能力方法论漫谈
  16. 3、git 暂存区撤销与删除
  17. 在线端口检查工具 Online IP TCP UDP port scan
  18. 花园多层住宅设计CAD施工图教程分享
  19. NoSQL数据库之Redis(三):常用五大数据类型
  20. 产品经理PM相关书籍---推荐阅读

热门文章

  1. 内存问题提醒!结构体+protobuf做协议体发送!序列化
  2. 百度与华为全面战略合作 人工智能手机真的要来了
  3. 面向对象的故事~数据底层操作告诉了我们接口,抽象类,继承与多态性的使用~续(TestBase继承ITest是多余的?)...
  4. android开发学习——Mina框架
  5. 局域网内连接MySQL
  6. 4.3英寸屏双核 LG Prada K2通过FCC认证
  7. 基于智能手机Android平台音乐播放器全程开发实战
  8. 网络爬虫--10.使用正则表达式的爬虫
  9. Flask爱家租房--订单(下订单)
  10. 深度学习之 SSD(Single Shot MultiBox Detector)