社会名流问题

来源:互联网 发布:淘宝淘口令在哪看 编辑:程序博客网 时间:2024/05/16 06:57
题目 社会名流问题 来源改编自《算法引论》(Udi Manber) P71 (5.5)描述在n个人中,一个被所有人知道但却不知道别人的人,被定义为社会名流。 
现在的问题是如果存在,试找出该社会名流。你可以使用的唯一方式是询问:“请问你知道那个人吗?” 
请给出提问次数为O(n)的算法。
关于输入输入的第一行为整数n<10000,表示共有n个人人。 其后每行一对数字i和j,表示i认识j,其中0≤i,j<n。 最后一行数字为0 0,表示输入结束。
关于输出如果存在社会名流,请输出社会名流的序号,否则输出“NOT FOUND”。
例子输入
31 02 00 0
例子输出
0
#include <stdio.h>int main(){int *p = 0;int n;int a, b;int j;scanf("%d", &n);p = (int *)calloc(n, sizeof(int));for (j = 0; j != n; ++j){p[j] = 0;}while (scanf("%d%d", &a, &b) && (a || b)){--p[a];++p[b];}for (j = 0; j != n; ++j){if (p[j] == n - 1){printf("%d", j);}}return 0;}
0 0
原创粉丝点击