Q1
请编写程序创建一个有向图。有向图中包含n个顶点,编号为0至n-1。
输入格式:
输入第一行为两个正整数n和e,分别表示图的顶点数和边数,其中n不超过20000,e不超过20000。接下来e行表示每条边的信息,每行为3个非负整数a、b、c,其中a和b表示该边的端点编号,c表示权值。各边并非按端点编号顺序排列。
输出格式:
按顶点编号递增顺序输出每个顶点引出的边,每个顶点占一行,若某顶点没有引出边,则不输出。每行表示一个顶点引出的所有边,格式为a:(a,b,w)……,表示有向边a->b的权值为w,a引出的多条边按编号b的递增序排列。
输入样例:
7 7
0 1 5
0 3 7
0 6 6
1 2 4
2 5 1
3 5 3
6 5 4
输出样例:
0:(0,1,5)(0,3,7)(0,6,6)
1:(1,2,4)
2:(2,5,1)
3:(3,5,3)
6:(6,5,4)
代码长度限制
16 KB
时间限制
500 ms
内存限制
20 MB
栈限制
8192 KB
Q2
唐僧被妖精抓到了妖洞里,悟空前往解救。妖洞由n行m列单元格组成。有的单元格是空地,可以走;有的单元格处是墙壁,不能走。假定悟空只可以朝上、下、左、右四个方向走,不能斜着走,悟空每行进一个位置(单元格)需要1分钟。此外,悟空有一种超能力,可以在1分钟瞬时移动最多T步(即1分钟行进最多T个单元格),但受体力限制,这种超能力只能使用一次。给定妖洞地图、悟空的位置、唐僧的位置,请编写程序计算悟空解救唐僧所需要的最短时间。
image.png
输入格式:
输入包含多组数据。每组数据第一行是3个整数n、m、T (1≤ n, m, T ≤100),含义如题目所述;接下来是n行,每行m个数字,表示整个地图。空地格子用0表示,墙壁用1表示,悟空所在位置用3表示,唐僧的位置用4表示。
输出格式:
对于每组数据,如果悟空能够解救到唐僧,输出一个整数,表示悟空到唐僧所在位置所需的最短时间,如果不能到达唐僧所在位置,输出“can not save”。
输入样例1:
5 5 2
1 0 1 1 1
1 0 4 1 0
1 0 0 1 0
0 0 0 1 0
1 0 3 0 1
5 5 3
3 0 1 1 1
1 0 1 1 0
1 0 1 1 0
0 0 0 1 0
1 0 1 0 4
输出样例1:
2
can not save
输入样例2:
7 8 5
1 0 1 1 1 1 1 0
1 0 4 1 0 0 3 0
1 0 0 1 0 0 0 0
0 0 1 0 0 1 0 1
1 0 0 0 1 1 0 0
0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0
输出样例2:
8
代码长度限制
16 KB
时间限制
10 ms
内存限制
64 MB
栈限制
8192 KB
Q3
编写程序对给定的有向图(不一定连通)进行深度优先遍历,图中包含n个顶点,编号为0至n-1。本题限定在深度优先遍历过程中,如果同时出现多个待访问的顶点,则优先选择编号最小的一个进行访问,以顶点0为遍历起点。
输入格式:
输入第一行为两个整数n和e,分别表示图的顶点数和边数,其中n不超过20000,e不超过50。接下来e行表示每条边的信息,每行为两个整数a、b,表示该边的端点编号,但各边并非按端点编号顺序排列。
输出格式:
输出为一行整数,每个整数后一个空格,即该有向图的深度优先遍历结点序列。
输入样例1:
3 3
0 1
1 2
0 2
输出样例1:
0 1 2
输入样例2:
4 4
0 2
0 1
1 2
3 0
输出样例2:
0 1 2 3
代码长度限制
16 KB
时间限制
50 ms
内存限制
64 MB
栈限制
65536 KB