您的位置:首页 > 其它

URAL 1022 Genealogical Tree (DFS)

2015-09-12 21:49 453 查看
#include <stdio.h>

#define MAX 101
int numOfMembers;
int relation[MAX][MAX];//relation[parent][child]
int stack[MAX];
int top;
int flagOfInStack[MAX];

void toFindChild(int parent){
if (flagOfInStack[parent] == 1)
return;

int member;
for (member = 1; member <= numOfMembers; member++)
if (relation[parent][member] == 1)
toFindChild(member);

top++;
stack[top] = parent;
flagOfInStack[parent] = 1;
}

int main(){
scanf("%d", &numOfMembers);
int member;
for (member = 1; member <= numOfMembers; member++){
int parent = member;
while (1){
int child;
scanf("%d", &child);
if (child == 0)
break;
relation[parent][child] = 1;
}
}

for (member = 1; member <= numOfMembers; member++)
toFindChild(member);

while (top){
printf("%d%c", stack[top], top == 1 ? '\n' : ' ');
top--;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息