欧拉路径

来源:互联网 发布:手机淘宝图片最佳尺寸 编辑:程序博客网 时间:2024/06/06 23:16

                      ZJOI2002Travel旅行家的难题


旅行家来到了一个著名的旅游胜地。这里的风景很好,旅行家想自己把所有的路都走一遍,这样可以自由地欣赏美丽的风景。不过他不想把自己已经走过的路再走一遍,在他看来,风景只有第一次看到的时候才是最美丽的。幸好,他可以在车站乘游览车去其它车站,然后继续他的旅程。不过他不喜欢浪费时间在坐车上,也不想花太多的钱在乘车上。所以他希望在看到尽可能多的风景的前提下,尽量少坐车,少花钱。
  这个旅游胜地一共有n个路口。每条路都是从某一个路口到达另一个路口。每个路口都设有一个车站。任意两个车站之间都有游览车直通。在同一个车站坐车不管到哪里车费都是一样的。但是不同的车站有着不同的收费标准。现在请你写一个程序,为旅行家设计一条路线,使得这条路线覆盖尽可能多的道路(不包括乘车经过的),并且乘车次数最少。如果存在两条以上符合要求的路线,选择花钱最少的一条。路线的起点和终点任意。

 

输入格式:

  输入包括了多个测试数据。每个测试数据开头是一个整数n(1<=n<=100),表示路口总数。接下来一行包括了n个整数,依次表示每个车站的收费标准。再接下来是一个整数m,表示道路总数。之后的m行每行包括两个整数x,y(1<=x,y<=n)分别表示该道路连接的两个路口。路口按照输入顺序从小到大依次编号。

 

输出格式:

对于每个测试数据,在单独一行里依次输出你设计的路线覆盖的道路数、坐车次数以及所用车费,中间用一个空格隔开。

 

样例输入:

53 5 8 7 261 21 31 52 53 43 5

 

样例输出:

6 2

 

数据范围:

1<=n<=100

 

时间限制:

1s

 

空间限制:

256M

欧拉路径,我们对于那些度为偶数的点可以直接一遍走完,如果有奇点,那么每次连线操作可以是两个奇点变为偶点,一个图能够被走遍当且仅当奇点个数为2或0,所以只需要统计奇点个数ll,输出前(ll)/2-1个钱最小的奇点和即可,边能走遍,直接输m,坐车次数即为(ll)/2-1

原创粉丝点击