Codeforces Round #364 (Div. 2) E. Connecting Universities【两次dfs】
2016-08-27 15:08
393 查看
两次dfs,从1开始搜索,son[x]记为以x为根的子树里有多少所大学,然后找到第一个son[x]>=m的做为下一次dfs的起点。第二次dfs以x为起点,计算到每一所大学的距离,然后在累加一下。
/* *********************************************** Author :Maltub Email :xiang578@foxmail.com Blog :htttp://www.xiang578.com ************************************************ */ #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <set> #include <map> #include <string> #include <math.h> #include <stdlib.h> #include <time.h> //#include <bits/stdc++.h> #define rep(i,a,n) for(int i=a;i<n;i++) #define per(i,a,n) for(int i=n-1;i>=a;i--) #define pb push_back using namespace std; typedef vector<int> VI; typedef long long ll; const ll mod=1000000007; const int N=2*1e5+10; int u ,dp ,son ,st,n,m; vector<int>g ; void dfs(int x,int fa) { if(u[x]) son[x]=1; else son[x]=0; for(int i=0; i<g[x].size(); i++) { int y=g[x][i]; if(y==fa) continue; dfs(y,x); son[x]+=son[y]; } //printf("%d %d\n",x,son[x]); if(son[x]>=m&&st==-1) { st=x; } } void dfs2(int x,int fa,int cnt) { dp[x]=cnt; for(int i=0; i<g[x].size(); i++) { int y=g[x][i]; if(y==fa) continue; dfs2(y,x,cnt+1); } } int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int t; scanf("%d%d",&n,&m); memset(u,0,sizeof(u)); memset(dp,0,sizeof(dp)); for(int i=1; i<=2*m; i++) { scanf("%d",&t); u[t]=1; } for(int i=1; i<n; i++) { int a,b; scanf("%d%d",&a,&b); g[a].push_back(b); g[b].push_back(a); } st=-1; dfs(1,0); //printf("%d\n",st); dfs2(st,0,0); ll ans=0; for(int i=1; i<=n; i++) { if(u[i]) ans+=dp[i]; } cout<<ans<<endl; return 0; }
相关文章推荐
- 向量
- 服务器端解决JS跨域调用问题
- 隐藏文件病毒
- Linux命令(4):ls
- #91 Minimum Adjustment Cost
- 解决com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor f
- 8.27考试整理
- ionic 中使用ion-slide-box
- ceye的利用
- VS2015 MySql 对应驱动版本
- Android View框架总结(九)KeyEvent事件分发机制
- 【小游戏】 Eliminate
- Java泛型解惑
- Apache StratOS Cartridges 介绍及部署方式
- MQTT协议以及库函数说明
- Android View框架总结(九)KeyEvent事件分发机制
- 淘宝(大数据库应用)--转载
- py学习之路5---变量
- PowerDesigner跟表的字段加注释
- interlliJ idea16和Jrebel安装和破解