hihoCoder Challenge 14 register

Ended

Participants:709

Verdict:Accepted
Submitted:2015-08-30 19:57:48

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#include <set>
#define ll long long
#define mst(a,x) memset(a,x,sizeof(a))
using namespace std;
const int N = 100005;
int f[N], n, ans, v[2 * N], fst[N], nxt[2 * N], tot, mx, dep[N];
void dfs(int x)
{
    int y;
    f[x] = 0;
    for(int p = fst[x]; ~p; p = nxt[p])
    {
        y = v[p];
        dep[y] = dep[x] + 1;
        dfs(y);
        f[x] = max(f[x], f[y] + 1);
    }
    if(fst[x] == -1)
    {
        if(~mx) ans = max(ans, dep[x] + mx);
    }
    //printf("x %d dep %d, f %d\n",x , dep[x], f[x]);
    mx = max(mx, f[x]);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX