POJ 3694 Network
大意:让你求无向图的桥(割边)
思路:一次查询,重建一次图,然后求一次割边,TLE。去网上开了看资料,可以用LCA暴力查询,唔,改天看看LCA。
TLE CODE:
#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相关推荐
- 【割边缩点】解题报告:POJ - 3694 - Network(Tarjan割边缩点 + LCA + 并查集优化)
POJ - 3694 - Network 给定一张N个点M条边的无向连通图,然后执行Q次操作,每次向图中添加一条边,并且询问当前无向图中"桥"的数量.N≤105,M≤2∗105,Q ...
- POJ - 3694 Network tanjar割边+lca
题目链接 思路:跑一边tanjar将所有的割边u->v标记为cut[v]=true,表示u->v这条边为割边.然后记录总的割边数ans,每次从两个询问点暴力往上边在跑直到LCA,如果碰到c ...
- POJ 3694 Network ★(边双连通分量+并查集缩点+LCA)
[题意]一个无向图可以有重边,下面q个操作,每次在两个点间连接一条有向边,每次连接后整个无向图还剩下多少桥(每次回答是在上一次连边的基础之上) [分析]好题,做完后涨了很多姿势~ 普通做法当然就是每加 ...
- POJ - 3694 Network(边双缩点+LCA+并查集优化)
题目链接:点击查看 题目大意:给出一个由n个点组成的无向图,现在有m次操作,每次操作都会向图中增加一条无向边,每次操作后询问当前图中有多少个桥 题目分析:题意很好理解,思路也很好想,就是代码量有点小多 ...
- POJ 3694 Network(tarjan+lca+并查集)
题目 给定一张NNN个点MMM条边的无向连通图,然后执行QQQ次操作,每次向图中添加一条边,并且询问当前无向图中"桥"的数量. 题解 先求出图中所有的边双,然后缩点 令c[x],c ...
- POJ 1236 Network of Schools(强连通 Tarjan+缩点)
POJ 1236 Network of Schools(强连通 Tarjan+缩点) ACM 题目地址:POJ 1236 题意: 给定一张有向图,问最少选择几个点能遍历全图,以及最少加入�几条边使得 ...
- 【POJ - 3694】Network(对dfn求lca 或 缩点+lca 或 边双连通+并查集)
题干: 网络管理员管理大型网络.该网络由N台计算机和成对计算机之间的M链路组成.任何一对计算机都通过连续的链接直接或间接连接,因此可以在任何两台计算机之间转换数据.管理员发现某些链接对网络至关重要,因 ...
- [tarjan] poj 1236 Network of Schools
主题链接: http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS Memory Limit: 10000K To ...
- POJ 1236 Network of Schools(tarjan)
Network of Schools Description A number of schools are connected to a computer network. Agreements h ...
最新文章
- golang中图片转base64_golang base64编码
- Cisco QOS之CBWFQ
- java对文件的操作详解,java对各种文件的操作详解
- nginx反向代理原理简介
- 本来中午打算应付下随便吃点,可是连盐都没有放的辣椒炒蛋实在是令人不快...
- LeetCode 1817. 查找用户活跃分钟数(哈希)
- python控制流教程_Python入门教程之运算符与控制流
- 《Reids 设计与实现》第七章 RDB 持久化
- 又一辆特斯拉电动汽车撞上警车,都是因为这个功能
- Given two binary trees, write a function to check if they areequal or not.
- Linux的10个经典彩蛋
- 利用信鸽推送实现登录后强制退出的功能
- 39.安装PH5\PH7
- tyvj P1179 飘飘乎居士数列游戏
- 如何提升码代码能力方法论漫谈
- 3、git 暂存区撤销与删除
- 在线端口检查工具 Online IP TCP UDP port scan
- 花园多层住宅设计CAD施工图教程分享
- NoSQL数据库之Redis(三):常用五大数据类型
- 产品经理PM相关书籍---推荐阅读
热门文章
- 内存问题提醒!结构体+protobuf做协议体发送!序列化
- 百度与华为全面战略合作 人工智能手机真的要来了
- 面向对象的故事~数据底层操作告诉了我们接口,抽象类,继承与多态性的使用~续(TestBase继承ITest是多余的?)...
- android开发学习——Mina框架
- 局域网内连接MySQL
- 4.3英寸屏双核 LG Prada K2通过FCC认证
- 基于智能手机Android平台音乐播放器全程开发实战
- 网络爬虫--10.使用正则表达式的爬虫
- Flask爱家租房--订单(下订单)
- 深度学习之 SSD(Single Shot MultiBox Detector)