Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <stdio.h>#include <iostream>#include <string>#include <map>#include <assert.h>using namespace std;struct node{string strname;int narrId, nlevel;};int arrSt[20000][14], nStindex = 1;int arrpow[15] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384};node arrnode[11000];int arrto[20002], arrnext[20002], arrhead[10000];int ntoalside = 1;void add(int x, int y){arrto[ntoalside] = y;arrnext[ntoalside] = arrhead[x];arrhead[x] = ntoalside++;}void dfs(int nindex, int nparent, int nlevel){arrnode[nindex].nlevel = nlevel;int nChildSidId = arrhead[nindex];for (; nChildSidId != 0; nChildSidId = arrnext[nChildSidId])if (arrto[nChildSidId] != nparent){