We Need More Bosses CodeForces - 1000E(缩点 建图 求桥 求直径)
题意:
就是求桥最多的一条路
解析:
先求连通分量的个数 然后缩点建图 求直径即可
- #include <bits/stdc++.h>
- #define mem(a, b) memset(a, b, sizeof(a))
- using namespace std;
- const int maxn = 1e6+, INF = 0x7fffffff;
- vector<int> G[maxn<<];
- int pre[maxn<<], lowlink[maxn<<], sccno[maxn<<], dfs_clock, scc_cnt, d[maxn<<], vis[maxn<<];
- stack<int> S;
- int n, m, maxway, pos;
- map<int, int> w[maxn<<];
- int head[maxn<<], cnt, ans;
- struct node
- {
- int u, v, next;
- }Node[maxn<<];
- void add_(int u, int v)
- {
- Node[cnt].u = u;
- Node[cnt].v = v;
- Node[cnt].next = head[u];
- head[u] = cnt++;
- }
- void add(int u, int v)
- {
- add_(u, v);
- add_(v, u);
- }
- void dfs(int u, int fa)
- {
- pre[u] = lowlink[u] = ++dfs_clock;
- S.push(u);
- for(int i=; i<G[u].size(); i++)
- {
- int v = G[u][i];
- if(v == fa) continue;
- if(!pre[v])
- {
- dfs(v, u);
- 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++;
- for(;;)
- {
- int x = S.top(); S.pop();
- sccno[x] = scc_cnt;
- if(x == u) break;
- }
- }
- }
- void init()
- {
- dfs_clock = scc_cnt = cnt = ;
- mem(sccno, );
- mem(pre, );
- mem(head, -);
- }
- void bfs(int u)
- {
- mem(vis, );
- mem(d, );
- queue<int> Q;
- Q.push(u);
- vis[u] = ;
- d[u] = ;
- maxway = , pos = u, ans = ;
- while(!Q.empty())
- {
- int u = Q.front(); Q.pop();
- for(int i=head[u]; i!=-; i=Node[i].next)
- {
- int v = Node[i].v;
- if(!vis[v])
- {
- vis[v] = ;
- d[v] = d[u] + ;
- if(d[v] > maxway)
- maxway = d[v], pos = v;
- Q.push(v);
- }
- }
- }
- }
- int main()
- {
- init();
- cin>> n >> m;
- int u, v;
- for(int i=; i<m; i++)
- {
- cin>> u >> v;
- G[u].push_back(v);
- G[v].push_back(u);
- }
- dfs(, -);
- // cout<< scc_cnt <<endl;
- for(int i=; i<=n; i++)
- {
- for(int j=; j<G[i].size(); j++)
- {
- int v = G[i][j];
- if(sccno[i] != sccno[v])
- {
- // cout<< i << " " << v <<endl;
- // w[i][v] = w[v][i] = 1;
- if(!w[sccno[i]][sccno[v]])
- w[sccno[i]][sccno[v]] = w[sccno[i]][sccno[v]] = , add(sccno[i], sccno[v]);
- }
- }
- }
- bfs();
- bfs(pos);
- cout<< maxway <<endl;
- return ;
- }
We Need More Bosses CodeForces - 1000E(缩点 建图 求桥 求直径)的更多相关文章
- E - We Need More Bosses CodeForces - 1000E (tarjan缩点,树的直径)
E - We Need More Bosses CodeForces - 1000E Your friend is developing a computer game. He has already ...
- HDU 1045 Fire Net(行列匹配变形+缩点建图)
题意:n*n的棋盘上放置房子.同一方同一列不能有两个,除非他们之间被墙隔开,这种话. 把原始图分别按行和列缩点 建图:横竖分区.先看每一列.同一列相连的空地同一时候看成一个点,显然这种区域不可以同一时 ...
- hdoj 3861 The King’s Problem【强连通缩点建图&&最小路径覆盖】
The King’s Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- poj3592 Instantaneous Transference tarjan缩点+建图
//给一个n*m的地图.坦克从(0 , 0)開始走 //#表示墙不能走,*表示传送门能够传送到指定地方,能够选择也能够选择不传送 //数字表示该格的矿石数, //坦克从(0,0)開始走.仅仅能往右和往 ...
- HPU 3639--Hawk-and-Chicken【SCC缩点反向建图 && 求传递的最大值】
Hawk-and-Chicken Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- We Need More Bosses CodeForces - 1000E (无向图缩点)
大意: 给定无向连通图, 定义两个点$s,t$个价值为切断一条边可以使$s,t$不连通的边数. 求最大价值. 显然只有桥会产生贡献. 先对边双连通分量缩点建树, 然后求直径即为答案. #include ...
- ZOJ 3781 - Paint the Grid Reloaded - [DFS连通块缩点建图+BFS求深度][第11届浙江省赛F题]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3781 Time Limit: 2 Seconds Me ...
- poj2186Popular Cows+tarjan缩点+建图
传送门: 题意: 给出m条关系,表示n个牛中的崇拜关系,这些关系满足传递性.问被所有牛崇拜的牛有几头: 思路: 先利用tarjan缩点,同一个点中的牛肯定就是等价的了,建立新的图,找出其中出度为0的点 ...
- POJ 2226 缩点建图+二分图最大匹配
这个最小覆盖但不同于 POJ 3041,只有横或者竖方向连通的点能用一块板子覆盖,非连续的,就要用多块 所以用类似并查集方法,分别横向与竖向缩点,有交集的地方就连通,再走一遍最大匹配即可 一开始还有点 ...
随机推荐
- 基于LBS平台的iOS开发
LBS,即Location Based Services,基于位置服务,用于定位.导航等功能,比如地图应用.订外卖等的app就需要这个功能. 在这里我使用的是高德LBS开放平台,地址:http://l ...
- stop-hbase.sh一直处于等待状态
今天关闭HBase时,输入stop-hbase.sh一直处于等待状态 解决方法: 先输入:hbase-daemon.sh stop master 再输入:stop-hbase.sh就可以关闭HBase ...
- HO引擎近况20190110
前两天更新完,挺兴奋 趁着兴奋把虚拟机里面的MACOSX从10.12.6升级到了10.14 然后装XCODE,虽然比较熟悉了,但是架不住慢啊 先下载了一个DMG的镜像文件,用不了,转成ISO也不行 然 ...
- 20155234《网路对抗》Exp9 WEB安全基础
20155234 Exp9 Web安全基础 基础问答 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意 ...
- Web安全基础实践
Web安全基础实践 标签(空格分隔): <> 目录 基础问题回答 WebGoat下载安装 SQL注入攻击 - SQL字符串注入(String SQL Injection) - 数字型SQL ...
- 【php增删改查实例】第四节 -自己 DIY 一个数据库管理工具
本节介绍如何自己DIY一个数据库管理工具,可以在页面输入sql 进行简单的增删改查操作. 首先,找到xampp的安装目录,打开htdocs: 新建一个php文件,名称为 mysqladmin.php ...
- oracle移动数据/修改数据文件路径
参考:http://wwyz998.blog.163.com/blog/static/321867852011117111832334/ oracle移动数据文件 1.连接到数据库 [oracle@l ...
- fastjson 使用记录
参考: https://www.cnblogs.com/cdf-opensource-007/p/7106018.html import com.alibaba.fastjson.JSON; impo ...
- Java设计模式-建造者(Builder)模式
目录 由来 使用 1. 定义抽象 Builder 2. 定义具体 Builder类 3. 定义具体 Director类 4. 测试 定义 文字定义 结构图 优点 举例 @ 最近在看Mybatis的源码 ...
- SpringBoot日记——MQ消息队列整合(一)
除了之前讲到的缓存,我们还会用到消息队列来存储一些消息,为了提升系统的异步性能等等: 消息服务有两个概念需要知道:消息代理-message broker,目的地-destination.消息发送由代理 ...