首页 > 代码库 > The 2014 ACMICPC Asia Regional Beijing Online

The 2014 ACMICPC Asia Regional Beijing Online

 

【E】

Explosion

Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total

【Problem Description】
   Everyone knows Matt enjoys playing games very much. Now, he is playing such a game. There are N rooms, each with one door. There are some keys(could be none) in each room corresponding to some doors among these N doors. Every key can open only one door. Matt has some bombs, each of which can destroy a door. He will uniformly choose a door that can not be opened with the keys in his hand to destroy when there are no doors that can be opened with keys in his hand. Now, he wants to ask you, what is the expected number of bombs he will use to open or destroy all the doors. Rooms are numbered from 1 to N.
 
【Input】
   The first line of the input contains an integer T, denoting the number of testcases. Then T test cases follow.
   In the first line of each test case, there is an integer N (N<=1000) indicating the number of rooms.
   The following N lines corresponde to the rooms from 1 to N. Each line begins with an integer k (0<=k<=N) indicating the number of keys behind the door. Then k integers follow corresponding to the rooms these keys can open.
 
【Output】
   For each test case, output one line "Case #x: y", where x is the case number (starting from 1), y is the answer which should be rounded to 5 decimal places.
 
【Sample Input】
2
3
1 2
1 3
1 1
3
0
0
0
 
【Sample Output】
Case #1: 1.00000
Case #2: 3.00000
 
【题意】
一个房间打开之后能获得另外几个房间的钥匙,这里房间和钥匙的关系可以作为结点之间的连边条件,用于构造一张图。本题即求最终所有点需要被炸开的期望。
 
【分析】
当时做题的时候想到的是用类似并查集的方法处理,但是想半天还是没想出方案来,最后用了BFS+DFS双向扩展,结果就TLE到死都没解决。
大神们提供的思路简直神奇了,又学会了一种新的STL数据结构。
 

The 2014 ACMICPC Asia Regional Beijing Online