您的位置:首页 > 其它

codeforces 树上dfs

2017-06-27 18:15 351 查看
codeforces813C  树上dfs。

#include <bits/stdc++.h>

using namespace std;
const int N = 2e5 + 7;
typedef pair<int,int> P;
int n,dis1
,disx
;
vector<int>g
;
void dfs(int s,int *dis,int step,int father)
{
for(int i = 0;i < g[s].size();i ++) {
int son = g[s][i];
if(son == father) continue;
dis[son] = step;
dfs(son,dis,step+1,s);
}
}

int main()
{
int n,a,b,x;
std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin >> n >> x;
for(int i = 0;i < n - 1;i ++) {
cin >> a >> b;
g[a].push_back(b);
g[b].push_back(a);
}
dis1[1] = disx[x] = 0;
dfs(1,dis1,1,-1);
dfs(x,disx,1,-1);
int ans = 2;
for(int i = 1;i <= n;i ++) {
if(dis1[i] > disx[i]) {
ans = max(ans , dis1[i] * 2);
}
}
cout << ans << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: