题目链接:

  Hdu 5452 Minimum Cut

题目描述:

  有一棵生成树,有n个点,给出m-n+1条边,截断一条生成树上的边后,再截断至少多少条边才能使图不连通, 问截断总边数?

解题思路:

  因为只能在生成树上截断一条边(u, v),所以只需要统计以v为根节点的子生成树里的节点与子生成树外的节点的边数就可以了。对于新加入的边(u', v')来说,只影响以LCA(u, v)为根节点的子树里面的节点。统计所有答案,扫一遍输出最小即可。(比赛的时候只统计叶子节点,给水过去了........23333333)

 #include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; const int INF = 0x3f3f3f3f;
const int maxn = ;
struct node
{
int to, next;
}edge[maxn*];
int tot, head[maxn], deep[maxn], fa[maxn], ans[maxn]; void init ()
{
tot = ;
memset (head, -, sizeof(head));
} void Add (int from, int to)
{
edge[tot].to = to;
edge[tot].next = head[from];
head[from] = tot ++;
} void dfs (int u, int father, int dep)
{
deep[u] = dep;
ans[u] = ;
fa[u] = father; for (int i=head[u]; i!=-; i=edge[i].next)
{
int v = edge[i].to;
if (v != father)
dfs (v, u, dep+);
}
} void LCA (int x, int y)
{
while (x != y)
{
if (deep[x] >= deep[y])
{
ans[x] ++;
x = fa[x];
}
else
{
ans[y] ++;
y = fa[y];
}
}
} int main ()
{
int t, n, m, i;
scanf ("%d", &t); for (int j=; j<=t; j++)
{
init ();
int u, v;
scanf ("%d %d", &n, &m); for (i=; i<n; i++)
{
scanf ("%d %d", &u, &v);
Add (u, v);
Add (v, u);
}
dfs (, , ); for ( ;i<=m; i++)
{
scanf ("%d %d", &u, &v);
LCA (u, v);
} int res = INF;
for (i=; i<=n; i++)
res = min (res, ans[i]);
printf ("Case #%d: %d\n", j, res);
}
return ;
}

最新文章

  1. 让IE8支持placeholder
  2. python---difflib
  3. LAMP环境的安装
  4. 1-02 启动和停止Sql Sever的服务
  5. WordPress主机
  6. javaweb学习总结(十)——HttpServletRequest对象(一)
  7. Android EditText的设置
  8. EL表达式结合页面JSTL使用 迭代显示表格
  9. [GIF] Colors in GIF Loop Coder
  10. 主题模型(概率潜语义分析PLSA、隐含狄利克雷分布LDA)
  11. 上海MVP见面会
  12. python 实现rsa 的加密解密存读取(PEM格式证书)【转发】
  13. TNS:listener does not currently know of service requested in connect descriptor错误改正
  14. vue-底部导航栏
  15. JS文件中的中文在网页引用时显示乱码的简单解决方式
  16. Unable to resolve target &#39;android-9&#39;
  17. MySQL 语句分析
  18. python 获取二维数组所有元素
  19. 操作数据类m
  20. 关于 Kafka offset

热门文章

  1. 在git push前怎样遗弃掉历史commit
  2. POJ 1183 反正切函数的应用(数学代换,基本不等式)
  3. 经常使用 Java API
  4. python day- 7 进本数据类型的先关知识点 set集合 深浅拷贝
  5. Intellij IDEA debug jar包
  6. LoadRunner性能测试样例分析
  7. SPOJ:House Fence(分治&amp;DP)
  8. iOS 堆和栈的区别和联系
  9. 哈希表的C实现(一)
  10. HTML 新属性