每个测试点时限 1s 内存限制 256MB

背景

作为走狗的你突然觉醒了:我是地球人!我为什么要为喵星人当走狗!于是,你开始策划了一件惊天动地的大事……

描述

如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。

第二段。

第三段。

第四段。

第五段。

给你一个图【喵星地图】,这个图一共有n个城市(编号1-n),以及若干条边,每条边符合以下条件的一条或多条:

1.无向边

2.有向边(与1不会同时存在)

3.阿尔法边(这些边必须走两次)

4.贝塔边(贝塔边一定是有向边且不为阿尔法边,当经过与该边相连的某个定点时,这条边的方向会改变)

此外还有0个或两个点(称为QWQ点) 满足当到达其中一个点时,会被立即传送到另外一个点。

现在你的任务是,给出一条路径,一次性走完所有边。走完的定义是非阿尔法边需要且仅能经过一次,阿尔法边需要且仅能经过两次。

说白了 这题就是一笔画……

输入格式

第一行一个整数Na,代表数据编号。

第二行两个整数n,m,q,代表城市数,路径数,QWQ点数。

接下来q行 每行一个数,表示QWQ点的编号

接下来m行,给出m条边以及边的性质,给出方式如:

1 2 101 1

其中:“1 2”指边的起点和终点;黄1指符合条件2(即该边由1指向2,若为0指符合条件1),绿0指不符合条件3,绿1指符合条件4.对于符合条件四的边 会在后面跟一个节点编号a,即为题述中的定点。

又如:

1 2 110 表示这是连接1,2,需要走两次的无向边。

输出格式

第一行一个整数,表示数据编号。

第二行一个整数,表示起点(起点为QWQ点时不会跳转)。

此后若干行,每行两个整数X,Y,表示这一步走的起点和终点。

样例输入

1
8 10 2
3
6
1 2 000
2 3 000
3 4 000
5 6 000
6 7 000
7 8 000
5 1 100
6 2 000
7 3 000
8 4 100

样例输出

1
7
7 8
8 4
4 3
6 5
5 1
1 2
2 6
3 7
7 6
3 2

样例提交

var n:integer;
begin
readln(n);
case n of
1:begin
writeln('1');
writeln('7');
writeln('7 8');
writeln('8 4');
writeln('4 3');
writeln('6 5');
writeln('5 1');
writeln('1 2');
writeln('2 6');
writeln('3 7');
writeln('7 6');
writeln('3 2');
end;
end.

 

数据范围与约定

n<=21,m<=50,q=0或2,数据有8组

样例解释

如下图所示:

特别注意

这题作者是作为提交答案题出的!当然你也可以当作常规题做。所有的数据可以在http://www.pauby89.com/hbweek2.html下载到

你只需要写一个程序(case i of之类的)把答案提交上来就可以了。[其实输入数据包里已经有一个工具帮你生成这样的程序了(Pascal),看看源代码你就懂了]

来源

小游戏