OpenJudge看到一个题目(#4109),题目描述如下:

小明和小红去参加party。会场中总共有n个人,这些人中有的是朋友关系,有的则相互不认识。朋友关系是相互的,即如果A是B的朋友,那么B也是A的朋友。小明和小红想知道其中某两个人有多少个公共的朋友。

输入第一行为一个正整数c,代表测试数据的个数。接下来是c组测试数据。

对于每组测试数据,第一行是三个数字n(2<=n<=100),m和k,分别表示会场中的人数,已知的朋友关系数目,问题的数目。接下来的m行,每行用两个数字i和j(1<=i,j<=n)表示了一个朋友关系,表示第i个人和第j个人是朋友关系。接下来的k行,每行用两个数字i和j(1<=i,j<=n)表示一个问题,请问第i个人和第j个人有多少公共的朋友。输出对于第i组测试数据,首先输出一行”Case i:”,接下来得k行代表了k个问题,每行输出第i个人和第j个人有多少公共的朋友。

用Python写了段代码,大致实现:

  1. # -*- coding:utf-8 -*-
  2.  
  3. def set_1(i, q):
  4. ''' generate a i*i ARRAY for all relationships
  5. if there is a relation set 1 or 0
  6. return i*i ARRAY with 1 or 0
  7. '''
  8. a = [0 for i in range(i*i)]
  9. for j in range(len(q)):
  10. n, m = q[j]
  11. a[(n-1)*i+(m-1)] = 1
  12. a[(m-1)*i+(n-1)] = 1
  13. return a
  14.  
  15. def solve(i, q, r):
  16. ''' solve question
  17. i is the number of people
  18. q is the set of questions
  19. r is the set of relationships, the result of function set_1();
  20. '''
  21. result = 0
  22. for j in range(len(r)):
  23. n, m = r[j]
  24. for l in range(i):
  25. if q[(n-1)*i+l] == 1 and q[(m-1)*i+l] == 1:
  26. result += 1
  27. print(result)
  28. result = 0
  29.  
  30. def main():
  31. d = [ 3, [3,2,2],
  32. [1,3],
  33. [2,3],
  34. [1,2],
  35. [1,3],
  36. [4,3,2],
  37. [1,2],
  38. [2,3],
  39. [1,4],
  40. [2,4],
  41. [1,3],
  42. [5,2,1],
  43. [1,2],
  44. [1,4],
  45. [3,4]
  46. ]
  47. for x in d: #Dispaly input
  48. print(x)
  49.  
  50. loc = []
  51. for m in range(1,len(d)): #Get the index of every question
  52. if len(d[m])==3:
  53. loc.append(m)
  54.  
  55. for i in range(len(loc)): #Sovle each question
  56. pNum, qNum, aNum = d[loc[i]] #slice out R and Q in d[]
  57. t = loc[i]+1
  58. R = d[t:t+qNum]
  59. Q = d[t+qNum:t+qNum+aNum]
  60.  
  61. r_1 = set_1(pNum,R) # set 1 for question
  62. print('-------------------\nCase'+str(i+1)+':')
  63. solve(pNum, r_1, Q)
  64. if __name__=='__main__':
  65. main()
  66.  
  67. '''OUTPUT
  68. 3
  69. [3, 2, 2]
  70. [1, 3]
  71. [2, 3]
  72. [1, 2]
  73. [1, 3]
  74. [4, 3, 2]
  75. [1, 2]
  76. [2, 3]
  77. [1, 4]
  78. [2, 4]
  79. [1, 3]
  80. [5, 2, 1]
  81. [1, 2]
  82. [1, 4]

Openjudge 百练第4109题的更多相关文章

  1. Poj OpenJudge 百练 1062 昂贵的聘礼

    1.Link: http://poj.org/problem?id=1062 http://bailian.openjudge.cn/practice/1062/ 2.Content: 昂贵的聘礼 T ...

  2. Poj OpenJudge 百练 1860 Currency Exchang

    1.Link: http://poj.org/problem?id=1860 http://bailian.openjudge.cn/practice/1860 2.Content: Currency ...

  3. Poj OpenJudge 百练 1573 Robot Motion

    1.Link: http://poj.org/problem?id=1573 http://bailian.openjudge.cn/practice/1573/ 2.Content: Robot M ...

  4. Poj OpenJudge 百练 2632 Crashing Robots

    1.Link: http://poj.org/problem?id=2632 http://bailian.openjudge.cn/practice/2632/ 2.Content: Crashin ...

  5. Poj OpenJudge 百练 2602 Superlong sums

    1.Link: http://poj.org/problem?id=2602 http://bailian.openjudge.cn/practice/2602/ 2.Content: Superlo ...

  6. Poj OpenJudge 百练 2389 Bull Math

    1.Link: http://poj.org/problem?id=2389 http://bailian.openjudge.cn/practice/2389/ 2.Content: Bull Ma ...

  7. Poj OpenJudge 百练 Bailian 1008 Maya Calendar

    1.Link: http://poj.org/problem?id=1008 http://bailian.openjudge.cn/practice/1008/ 2.content: Maya Ca ...

  8. [OpenJudge] 百练2754 八皇后

    八皇后 Description 会下国际象棋的人都很清楚:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题. ...

  9. 百练6255-单词反转-2016正式B题

    百练 / 2016计算机学科夏令营上机考试 已经结束 题目 排名 状态 统计 提问   B:单词翻转 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 输入一个 ...

随机推荐

  1. CentOS安装Nginx,并配置nodejs反向代理

    安装介绍 安装位置:/usr/local/nginx nginx安装包下载地址:http://nginx.org/download/nginx-1.7.11.tar.gz 安装依赖软件 安装nginx ...

  2. 一个简单的以User权限启动外部应用程序

    BOOL ExecuteAsUser(LPCWSTR lpszUserName, LPCWSTR lpszPassword, LPCWSTR lpszApplication, LPCWSTR lpsz ...

  3. (转)linux中常用的头文件

    头文件主目录include 头文件目录中总共有32个.h头文件.其中主目录下有13个,asm子目录中有4个,linux子目录中有10个,sys子目录中有5个.这些头文件各自的功能如下,具体的作用和所包 ...

  4. 【HDOJ】4504 威威猫系列故事——篮球梦

    水题. #include <cstdio> #include <cstdlib> #include <cstring> #define MAXN 25 ]; voi ...

  5. idea 14运行java工程报错-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.

    报错信息:Disconnected from the target VM, address: '127.0.0.1:59770', transport: 'socket' -Dmaven.multiM ...

  6. iOS面试题大全-点亮你iOS技能树

    所有的内容大部分来自于网络的搜集,所以我不是一个创造者,而是一个搬运工.我尽量把题目,尤其是参考答案的出处列明.若有任何疑问,建议,意见,请联系我. 第一部分面试题来源于iOS-Developer-I ...

  7. EF并发性能文章

    http://www.cnblogs.com/farb/p/ConcurrencyAndTransctionManagement.html

  8. mac os使用lsusb命令和连接未知的Android设备

    今天在mac上连接一个android设备发现连不上,adb devices看不到设备.于是想用lsusb命令看下,结果发现Mac居然没有这个命令,于是网上搜了下.发现了以下的命令system_prof ...

  9. 关于CCRect

    一直有一个误区,因为之前处理的公司引擎是屏幕坐标系 导致觉得CCRect的坐标起始值(x,y),习惯性的认为就是左上角的点. 但是,真正的x,y值,是跟x轴与y轴相对应的.

  10. MODULE_DEVICE_TABLE

    1. MODULE_DEVICE_TABLE (usb, skel_table);该宏生成一个名为__mod_pci_device_table的局部变量,该变量指向第二个参数.内核构建时,depmod ...