14225 Seafu
Never
#include<stdio.h> #include<stdlib.h> int direct[1001]; int distance[1001]; int child[1001]; int n; typedef struct Node { int id; struct Node *childnode[1000]; } Node; Node *create_node(int id){ Node *newnode = (Node*)malloc(sizeof(Node)); newnode->id = id; for(int i=0;i<child[id];i++){ newnode->childnode[i] = NULL; } return newnode; } Node *buildtree(int n,int *direct){ int nodenum[n+1]; for(int i=1;i<=n;i++){ nodenum[i] = 0; } Node *root = create_node(1); Node *nodes[n+1]; nodes[1] = root; for(int i=2;i<=n;i++){ Node *parent = nodes[direct[i-2]]; Node *node = create_node(i); parent->childnode[nodenum[parent->id]++] = node; nodes[i] = node; } return root; } void calculate(Node *root,int level,int *distance){ if(root == NULL) return; distance[(root->id)-1] = level; for(int i=0;i<child[root->id];i++){ calculate(root->childnode[i],level+1,distance); } } int find(int *direct,int student,int level){ if(level == 0) return direct[student-2]; if(level > 0 && student ==2) return -1; find(direct,direct[student-2],level-1); } void freeTree(Node *root){ if(root == NULL) return; for(int i=0;i<child[root->id];i++) freeTree(root->childnode[i]); //printf("%d ",root->id); free(root); } int main(void){ scanf("%d",&n); for(int i=0;i<n;i++){ child[i] = 0; } for(int i=0;i<n-1;i++){ scanf("%d",&direct[i]); child[direct[i]]++; } Node *root = buildtree(n,direct); calculate(root,0,distance); for(int i=1;i<n-1;i++) printf("%d ",distance[i]); printf("%d",distance[n-1]); printf("\n"); int q; scanf("%d",&q); for(int i=0;i<q;i++){ int A,B; scanf("%d %d",&A,&B); if(B == 0) printf("-1\n"); else{ printf("%d\n",find(direct,A,B-1)); } } freeTree(root); return 0; }
Raw Text
-
asdfnm adsdfgdasfdf
21 min ago
-
sdddsdssddsdsf
31 min ago
-
sdfgasdf sadfsadf
31 min ago
-
asdnb nadsdfdasd
50 min ago
-
Untitled
56 min ago
-
BUY SUPER HIGH QUALITY COUNTERFEIT MONEY ,CLONE CREDIT CARDS ONLINE GBP, DOLLAR, EUROS BUY COUNTERFE
CSS | 1 hour ago
-
BUY SUPER HIGH QUALITY COUNTERFEIT MONEY ,CLONE CREDIT CARDS ONLINE GBP, DOLLAR, EUROS BUY COUNTERFE
CSS | 1 hour ago
-
fghjfgh fghjfghj
1 hour ago
-
dsfdsf dsfdfs fsdd fsdfsfddf
1 hour ago
-
asdfgwertyhudfghjkl
1 hour ago