poj 3352【Road Construction】
狂晕,是我做题太少了吧?我竟然直接按输入输出的模式做题,即输出“Output for Sample Input 1”,呜呜,WA了几次就是因为这个。。。。。。。。。。。。。。。。。。。。。。。。。。。
1 #include <iostream> 2 #include <vector> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 7 const int maxN = 1000+10; 8 int low[maxN]; 9 int DFN[maxN]; 10 int cnt; 11 int Branch; 12 int degree[maxN]; 13 14 vector<int> edge[maxN]; 15 16 void Tarjan(int x,int fa) 17 { 18 low[x] = DFN[x] = cnt ++; 19 20 int len = edge[x].size(); 21 for(int i = 0;i < len;i ++) 22 { 23 int u = edge[x][i]; 24 if(u == fa) continue; 25 if(!DFN[u]) 26 { 27 Tarjan(u,x); 28 low[x] = min(low[x],low[u]); 29 } 30 else if(low[x] > DFN[u]) 31 low[x] = DFN[u]; 32 } 33 } 34 35 void UseTarjan(int n) 36 { 37 memset(DFN,0,sizeof(DFN)); 38 cnt = 1; 39 40 Branch = 0; 41 for(int i = 1;i <= n;i ++) 42 { 43 if(!DFN[i]) 44 { 45 Tarjan(i,i); 46 Branch ++; 47 } 48 } 49 } 50 51 int main() 52 { 53 int n,m; 54 55 while(cin >> n >> m) 56 { 57 for(int i = 0;i <= n;i ++) edge[i].clear(); 58 59 for(int i = 0;i < m;i ++) 60 { 61 int u,v; 62 cin >> u >> v; 63 edge[u].push_back(v); 64 edge[v].push_back(u); 65 } 66 67 UseTarjan(n); 68 69 memset(degree,0,sizeof(degree)); 70 for(int i = 1;i <= n;i ++) 71 { 72 int len = edge[i].size(); 73 for(int j = 0;j < len;j ++) 74 { 75 if(low[i] != low[edge[i][j]]) 76 degree[low[i]] ++; 77 } 78 } 79 80 int ans = 0; 81 for(int i = 1;i < cnt;i ++) 82 { 83 if(degree[i] == 1) ans ++; 84 } 85 ans = (ans + 1) / 2; 86 cout << ans << endl; 87 } 88 89 return 0; 90 }
转载于:https://www.cnblogs.com/Shirlies/archive/2012/09/14/2685517.html
poj 3352【Road Construction】相关推荐
- POJ 1904 【强连通分量】.cpp
题意: 很久很久以前.. 有一个国王.. 他有好几个儿子.. 这些王子都喜欢上了邻国的公主.. 他们准备迎娶自己喜欢的公主中的一个.. 国王就让宰相给列一个清单.. 宰相就给了国王一个清单..上面写明 ...
- POJ 3422 【最大费用】.cpp
题意: 给出一个每一格带值的矩阵 每一次只可以从左上角走到右下角 问走过k次后最多能得到多少值 P.S 走过的格子值会变成0 输入: 给出一个n 和 k 给出n*n 矩阵 思路: 因为求的是最大值 所 ...
- Invitation Cards POJ - 1511【最短路】
Invitation Cards POJ - 1511 题目 思路:建两张图,一张正向一张反向,先在正向图里求一遍一号点到所有点的距离,再在反向图里求一遍,反向图里一号点到所有点的距离的意思是所有点到 ...
- POJ 2248【加法链】
描述 对于一个数列a1,a2......am,其中a1 = 1,am = n , a1 < a2 < ... < am-1 < am 对于每个k(2<=k<=m), ...
- POJ 1659【Havel-Hakimi 定理】
Havel-Hakimi 定理: 一个非负整数组成的有限序列如果是某个无向图的序列,则称该序列是可图的. 例如,判断序列s: 7, 7, 4, 3, 3, 3, 2, 1 是否是可图的. 删除序列s ...
- 【POJ - 3352】Road Construction(Tarjan,边双连通分量)
题干: It's almost summer time, and that means that it's almost summer construction time! This year, th ...
- POJ 3177 Redundant Paths POJ 3352 Road Construction(双连接)
POJ 3177 Redundant Paths POJ 3352 Road Construction 题目链接 题意:两题一样的.一份代码能交.给定一个连通无向图,问加几条边能使得图变成一个双连通图 ...
- poj 3352 Road Construction(边-双连通分量)
题意:给定一个连通的无向图G,至少要添加几条边,才能使其变为双连通图. 解题思路: 显然,当图G存在桥(割边)的时候,它必定不是双连通的.桥的两个端点必定分别属于图G的两个[边双连通分量](注意不是点 ...
- Tarjan算法求解桥和边双连通分量(附POJ 3352 Road Construction解题报告)
http://blog.csdn.net/geniusluzh/article/details/6619575 在说Tarjan算法解决桥和边双连通分量问题之前我们先来回顾一下Tarjan算法是如何求 ...
最新文章
- 控制显示隐藏_大众发动机控制单元隐藏功能刷写
- 天正立面lisp什么意思_合欢花的花语是什么?为什么合欢花叫苦花?
- Caffe 关于 LetNet-5 之 lenet_train_test.prototxt 解析
- CMAKE支持c99的两种方式
- DARPA 计划向下一代人工智能技术投入 20 亿美元
- ArcGIS问题小记
- 我们该不该旗帜鲜明地反对李彦宏当选院士?
- Windows App开发之集合控件与数据绑定
- LeveyPopListView
- 全球及中国纳米材料行业竞争格局及发展规模预测报告2021年版
- python嵩天课后题及答案第二章_课后参考答案-第二章部分习题参考答案
- php %3ch1%3e字体,phpWebSite搜索模块跨站脚本执行漏洞
- 程序员面试被问到“三次握手,四次挥手”怎么办?
- nginx 优化(收藏)
- 全国计算机二级考试2008版教材,全国计算机等级考试教程:二级Visual FoxPro(2008年版)...
- 基于粒子滤波的定位算法 ——原理、理解与仿真
- LeetCode——四数之和
- 用xshell ssh连接测试服务器时候出的问题
- C Primer Plus(6) 中文版 第5章 运算符、表达式和语句 5.2 基本运算符
- Thinkpad T480 新机分区