codeforces 树上dfs

codeforces813C  树上dfs。

#include 

using namespace std;
const int N = 2e5 + 7;
typedef pair P;
int n,dis1[N],disx[N];
vectorg[N];
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;
}


你可能感兴趣的:(codeforces 树上dfs)