Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <math.h>#include <stdio.h>#include <algorithm>#include <string.h>#include <stack>#include <queue>#include <vector>#include <map>#define Zero(a) memset(a, 0, sizeof(a))#define Neg(a) memset(a, -1, sizeof(a))#define All(a) a.begin(), a.end()#define PB push_backusing namespace std;const int maxn = 100010;int n, m, cnt, id;int head[maxn];int dep[maxn * 2], E[maxn * 2], R[maxn];int f[maxn * 2][20], d[35];map<string, int >Hash;string sg[maxn];struct node{int to, next;}edges[maxn];void init() {cnt = 0;id = 1;Neg(head);Zero(R);