2364 六度分割
时间限制 : 20000/10000 MS(Java/Others) | 内存限制 : 409600/204800 KB(Java/Others)
提交数 : 21 | 通过数 : 3
题目描述
1967年,美国著名社会心理学家米尔格伦(Stanley Milgram )通过一系列连锁信件实验验证了“六度分隔”理论(Six Degrees of Separation),简单来说就是:你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过六个人,你就能够认识任何一个陌生人,朋友关系构成了人与人之间相互联系的纽带。“六度分隔”理论一经提出,就受到全球学术界的广泛关注,它也是社交网络服务(SNS)的基础理论之一。
请使用合理的数据结构和算法编写程序,验证“六度分隔”理论,要求必须能处理超过1000万对以上的朋友关系对。具体是找出指定的两个用户的分割度(如果两个用户是朋友关系则分隔度为1,如果两个用户不可达则分隔度为-1)。
输入要求
第一个为朋友关系对n(1<=n<=300000)。一行数据由两个用户编号组成,用制表符(\t)分隔,表示这两个用户是朋友关系。第二输入查询,数百行左右,一行数据由两个用户编号组成,用制表符(\t)分隔。
输出要求
每行输出一个查询结果,格式为:用户1编号 用户2编号 两者的分隔度(用制表符分隔)。
输入样例
7
1001 1003
1100 1001
1003 1105
1001 1208
1230 1001
1005 1208
1300 1301
4
1001 1005
1005 1230
1003 1208
1001 1301
输出样例
1001 1005 2
1005 1230 3
1003 1208 2
1001 1301 -1
提示
来源
NBU OJ
[ 返回顶端 ] | [ 代码提交 ] | [ 统计数据 ] | [ 历史提交 ]