题目名称 1495. [UVa 10828] 随机程序
输入输出 backtoKR.in/out
难度等级 ★★☆
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 10
题目来源 Gravatarcstdio 于2014-01-19加入
开放分组 全部用户
提交状态
分类标签
UVa 高斯消元法 概率与期望
分享题解
通过:21, 提交:49, 通过率:42.86%
Gravatarzys 100 0.477 s 0.48 MiB C++
Gravatar神利·代目 100 0.483 s 0.41 MiB C++
Gravatar/k 100 0.490 s 8.78 MiB C++
Gravatar神利·代目 100 0.494 s 0.46 MiB C++
Gravatarmikumikumi 100 0.573 s 0.41 MiB C++
GravatarL_in 100 0.574 s 0.50 MiB C++
Gravatar_Itachi 100 0.579 s 0.46 MiB C++
Gravatar_Itachi 100 0.581 s 0.41 MiB C++
Gravatar_Itachi 100 0.582 s 0.46 MiB C++
Gravatar‎MistyEye 100 0.613 s 0.57 MiB C++
关于 随机程序 的近10条评论(全部评论)
劲啊
Gravatarsxysxy
2017-03-09 13:46 5楼
这个题需要注意的地方还蛮多的,
比如边数所有的测试点都>n,
比如若这个点与1不连通则概率也为0,
比如-0.00001输出若直接输出的话为-0.000,但应该是0.000
比如用Notepad++写代码的话注释会乱码。。
Gravatar_Itachi
2016-12-19 12:07 4楼
调了N遍才过啊!55555.......难死了
Gravatar神利·代目
2015-10-04 15:48 3楼
这道题的读入方式真奇葩0.0
Gravatar清羽
2015-04-23 11:43 2楼
由于是个图……所以我随机出来的数据有点……额……奇怪……
Gravatarcstdio
2014-01-19 22:16 1楼

1495. [UVa 10828] 随机程序

★★☆   输入文件:backtoKR.in   输出文件:backtoKR.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】



你一定听说过Kernighan和Ritchie,他们是《C程序设计语言》的作者。当在C语言中编程时,我们使用不同的控制语句和循环。例如,if-then-else(原文如此——译者注),for,do-while等等。考虑如下伪代码:

//execution starts here
do {
	U;
	V;
} while(condition);
W;

在上述代码中,每个分支都有一定的执行条件。这一代码可以用流程图表示如下:

对每个节点,令其转到任意后继的概率相等。因此,在上面的代码中,U执行的期望次数是2.在这个问题中,给出这样的一个流程图,请你找出每个节点的期望执行次数。

【输入格式】

输入包含至多100组数据。

每组数据的第1行是一个正整数n(1<=n<=100)。n是流程图中的节点个数。节点被从1到n编号,并且总是从1开始执行。

下面有若干行,每行2个正整数:start和end,意味着执行完start后可以转到end。以2个0结束。

下面一行有一个正整数q(1<=q<=100),描述询问个数。

接下来的q行,每行一个正整数x,意味着询问节点x的期望执行次数。

输入文件以n=0结束。

【输出格式】

对第i组数据:

先输出一行"Case #i:"。

接下来输出q行,每行1个实数,表示该查询对应的期望次数。保留三位小数。某个节点有可能被永远执行(例如,一个无穷的for循环)。对于这种情况,输出"infinity"。

具体格式见样例。

【样例输入】

3
1 2
2 3
2 1
0 0
3
1
2
3
3
1 2
2 3
3 1
0 0
3
3
2
1
0

【样例输出】

Case #1:
2.000
2.000
1.000
Case #2:
infinity
infinity
infinity

【提示】

使用计算机中的“保留3位小数”指令。假设你的计算机能正确进行舍入。

【来源】

UVa10828 Back to Kernighan-Ritchie

刘汝佳,《算法竞赛入门经典训练指南》表2-12

Problem setter: Mohammad Sajjad Hossain

Special Thanks: Shahriar Manzoor