考虑每一条非树边都连接了祖先和儿子,类似于序列上的问题,从底往上算,当发现如果走到某个环的祖先,且这个环中还没有被选到,那么就将最浅的那条边贪心选择即可
具体实现可以使用bitset维护当前子树的询问,如果这条边选了,那么bitset清空,否则和父亲合并

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 2005
4 struct ji{
5 int nex,to;
6 }edge[N<<1];
7 bitset<N>bi[N];
8 vector<int>v[N];
9 int E,n,m,x,y,ans,s[N],head[N];
10 void add(int x,int y){
11 edge[E].nex=head[x];
12 edge[E].to=y;
13 head[x]=E++;
14 }
15 void dfs(int k,int fa,int sh){
16 s[k]=sh;
17 for(int i=head[k];i!=-1;i=edge[i].nex)
18 if (edge[i].to!=fa)dfs(edge[i].to,k,sh+1);
19 }
20 void dfs2(int k,int fa){
21 bi[k].reset();
22 for(int i=0;i<v[k].size();i++)bi[k].set(v[k][i]);
23 for(int i=head[k];i!=-1;i=edge[i].nex)
24 if (edge[i].to!=fa)dfs2(edge[i].to,k);
25 if (k==1)return;
26 if (bi[k].test(fa))ans++;
27 else bi[fa]|=bi[k];
28 }
29 int main(){
30 while (scanf("%d%d",&n,&m)!=EOF){
31 if ((!n)&&(!m))return 0;
32 E=ans=0;
33 memset(head,-1,sizeof(head));
34 for(int i=1;i<=n;i++)v[i].clear();
35 for(int i=1;i<n;i++){
36 scanf("%d%d",&x,&y);
37 add(x,y);
38 add(y,x);
39 }
40 dfs(1,0,0);
41 for(int i=n;i<=m;i++){
42 scanf("%d%d",&x,&y);
43 if (s[x]<s[y])swap(x,y);
44 v[x].push_back(y);
45 }
46 dfs2(1,0);
47 printf("%d\n",ans);
48 }
49 }

[hdu4582]DFS spanning tree的更多相关文章

  1. HDU 4582 DFS spanning tree(DFS+贪心)(2013ACM-ICPC杭州赛区全国邀请赛)

    Problem Description Consider a Depth-First-Search(DFS) spanning tree T of a undirected connected gra ...

  2. Educational Codeforces Round 3 E. Minimum spanning tree for each edge LCA/(树链剖分+数据结构) + MST

    E. Minimum spanning tree for each edge   Connected undirected weighted graph without self-loops and ...

  3. Codeforces Educational Codeforces Round 3 E. Minimum spanning tree for each edge LCA链上最大值

    E. Minimum spanning tree for each edge 题目连接: http://www.codeforces.com/contest/609/problem/E Descrip ...

  4. codeforces 609E Minimum spanning tree for each edge

    E. Minimum spanning tree for each edge time limit per test 2 seconds memory limit per test 256 megab ...

  5. 最小生成树(Minimum Spanning Tree)——Prim算法与Kruskal算法+并查集

    最小生成树——Minimum Spanning Tree,是图论中比较重要的模型,通常用于解决实际生活中的路径代价最小一类的问题.我们首先用通俗的语言解释它的定义: 对于有n个节点的有权无向连通图,寻 ...

  6. 【19.27%】【codeforces 618D】Hamiltonian Spanning Tree

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  7. Codeforces Educational Codeforces Round 3 E. Minimum spanning tree for each edge 树上倍增

    E. Minimum spanning tree for each edge 题目连接: http://www.codeforces.com/contest/609/problem/E Descrip ...

  8. 【HDU 4408】Minimum Spanning Tree(最小生成树计数)

    Problem Description XXX is very interested in algorithm. After learning the Prim algorithm and Krusk ...

  9. 数据结构与算法分析–Minimum Spanning Tree(最小生成树)

    给定一个无向图,如果他的某个子图中,任意两个顶点都能互相连通并且是一棵树,那么这棵树就叫做生成树(spanning tree). 如果边上有权值,那么使得边权和最小的生成树叫做最小生成树(MST,Mi ...

随机推荐

  1. 高德 Serverless 平台建设及实践

    作者 | 邓学祥(祥翼) 来源 | Serverless 公众号 高德从 FY21 财年开始启动 Serverless 建设,至今一年了,高德 Serverless 业务的峰值超过十万 qps 量级, ...

  2. 基于querybuilder的可根据现有数据表自动生成Restful API的dotnet中间件

    AutoApi 基于SqlKata Query Builder的可根据数据表自动生成Restful API的dotnet中间件 项目地址 Github Gitee 支持的数据库 MySql AutoA ...

  3. Windows内核开发-9-32位和64位的区别

    Windows内核开发-9-32位和64位的区别 32位的应用程序可以完美再64位的电脑上运行,而32位的内核驱动无法再64位的电脑上运行,或者64位的驱动无法在32位的应用程序上运行.这是为什么呢. ...

  4. SLAM名词介绍

    gauge freedom:测量自由度 degrees-of-freedom(DoF) 自由度 wide-baseline matches:宽基线匹配 宽基线匹配:从描绘同一场景的两个或多个图像中建立 ...

  5. Java 是编译型语言还是解释型语言?

    Java首先由编译器编译成.class类型的文件,这个是java自己类型的文件.然后在通过虚拟机(JVM)从.class文件中读一行解释执行一行.因此Java是一种半编译半解释的语言,理解这种意思即可 ...

  6. 新型活跃Mozi样本分析报告

    基本信息 对象 值 文件名 Photo.scr 文件类型 PE32 executable for MS Windows (GUI) Intel 80386 32-bit 文件大小 6271259 by ...

  7. Scrum Meeting 0509

    零.说明 日期:2021-5-9 任务:简要汇报两日内已完成任务,计划后两日完成任务 一.进度情况 组员 负责 两日内已完成的任务 后两日计划完成的任务 qsy PM&前端 测试 测试 cyy ...

  8. Beta阶段第四次会议

    Beta阶段第四次会议 时间:2020.5.20 完成工作 姓名 工作 难度 完成度 ltx 1.对小程序进行修改2.提出相关api修改要求 轻 85% xyq 1.设计所需api文档2.编写相关技术 ...

  9. 深入理解xLua基于IL代码注入的热更新原理

    目前大部分手游都会采用热更新来解决应用商店审核周期长,无法满足快节奏迭代的问题.另外热更新能够有效降低版本升级所需的资源大小,节省玩家的时间和流量,这也使其成为移动游戏的主流更新方式之一. 热更新可以 ...

  10. Asp.Net 熟悉 Spring

    注:(为加强记忆,所以记录下来,对于有些地方为什么那样写,我也不太理解) 一.我们先创建个窗体应用程序Demos,事先熟悉它是这么实现的 第一步,先在项目的根目录下建一个library文件夹,目的是放 ...