随笔分类 - 搜索
DS33 图的深度优先遍历
memory limit: 65536KB time limit: 200MS
accept: 94 submit: 230
Description
编号为1…N 的N个城市之间以单向路连接,每一条道路的长度都是一样的。。。。有点不可思议。。。。
从城市1出发,进行深度优先遍历,请输出遍历的序列。对一个顶点的若干邻接顶点,优先遍历号码大的邻接顶点。
Input
每个测试用例的第一行包含2个整数,分别是 N、R :
N:表示城市的总数,2 <= N <= 100
R:表示道路的条数,1 <= R <= 10000
接下来的R行,每行用 S D(以空格隔开)表示一条道路:
S:表示道路的出发城市,1 <= S <= N
D:表示道路的目标城市,1 <= D <= N
Output
为每个测试用例输出一行结果:深度优先遍历的城市序列。城市编号之间用一个空格分隔。
Sample Input
6 7
1 2
2 4
3 4
1 3
4 6
3 5
5 4
Sample Output
1 3 5 4 6 2
Hint
在本题,用邻接矩阵来存储图,实现“查找第一个邻接顶点”“找下一个邻接顶点”比较简单。注意,这并不意味着邻接表在任何时候都不好用,例如在顶点数很多的情况下,邻接矩阵就存储不下,只能用邻接表。
Author
John
#include
int flag[102],a[102][102];
int n;
void DFS(int i)
{
int j;
flag[i]=1;
printf("%d ",i+1);
for(j=n-1;j>0;j--)
if(a[i][j]&&flag[j]==0)
DFS(j);
}
int main()
{
int r,x,y;
scanf("%d%d",&n,&r);
while(r--)
{
scan

浙公网安备 33010602011771号