2013级DS作业和实验参考答案总汇(1)(6)

2019-09-01 16:40

}

cin>>i>>j>>w; arc[i][j]=w; arc[j][i]=w; } for(i=0;ireturn 0;

9087:邻接矩阵遍历

Problem Description

给出一个无向图的各个点之间的邻接关系,输出遍历序列。 Input

有多组数据,每组数据第一行有两个整数n、m,(0

分别输出从标号为1点开始深度和广度优先搜索的序列,每个数之后有一个空格。每个序列分别占一行。 Sample Input 8 9 1 2 1 3 2 4 2 5 3 6 3 7 4 5 4 8 6 7

Sample Output

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

//9087ANSWER CODE1 #include using namespace std;

int n,visited[100],visited2[100],arc[100][100]; void DFS(int v)

{ cout<

void BFS(int v) { int front=-1,rear=-1,Q[100]; cout<

void main() { int m,i,j,k; while(cin>>n>>m) { for (i=1; i<=n; i++) { for (j=1; j<=n; j++)arc[i][j]=0;} for(k=0;k>i>>j;arc[i][j]=arc[j][i]=1;} for(i=1;i<=n;i++) {visited[i]=0;visited2[i]=0;} DFS(1);cout<

}

第十一次作业:图的生成树9076,9077,9088

9076:深度优先生成树 Problem Description

设有一连通无向图,其顶点值为字符型并假设各值互不相等,采用邻接矩阵表示法存储表示。利用DFS算法求其深度优先生成树(从下标0的顶点开始遍历),并在遍历过程中输出深度优先生成树的每一条边。 Input

有多组测试数据,每组数据的第一行为两个整数n和e,表示n个顶点和e条边(0

输出深度优先生成树的每一条边,每组输出占一行,每条边信息之间有一空格,每行最后均有一空格,具体格式见样例。 Sample Input

4 4 ABCD 0 1 0 3 1 2 1 3

Sample Output

(A,B) (B,C) (B,D)

//9076ANSWER CODE1 #include using namespace std;

int n,visited[100],arc[100][100];char vertex[20]; void DFS_spanningTree(int v) { visited[v]=1; for (int j=0; j

void main() { int e,i,j,k; while(cin>>n>>e>>vertex) { for (i=0; i>i>>j;arc[i][j]=arc[j][i]=1;} for(i=0;i

}

9077:广度优先生成树

Problem Description

设有一连通无向图,其顶点值为字符型并假设各值互不相等,采用邻接矩阵表示法存储表示。利用BFS算法求其广度优先生成树(从下标0的顶点开始遍历),并在遍历过程中输出广度优先生成树的每一条边。 Input

有多组测试数据,每组数据的第一行为两个整数n和e,表示n个顶点和e条边(0

输出广度优先生成树的每一条边,每组输出占一行,每条边信息之间有一空格,每行最后均有一空格,具体格式见样例。 Sample Input 4 4 ABCD 0 1 0 3 1 2 1 3

Sample Output

(A,B) (A,D) (B,C)

//9077ANSWER CODE1 #include using namespace std;

int n,visited[100],arc[100][100];char vertex[20]; void BFS_spanningTree(int v) { int front=-1,rear=-1,Q[100];; visited[v]=1;Q[++rear]=v; while (front!=rear) { v=Q[++front]; for (int j=0; j

void main() { int e,i,j,k; while(cin>>n>>e>>vertex) { for (i=0; i>i>>j;arc[i][j]=arc[j][i]=1;} for(i=0;i

9088:村村相连

Problem Description

漳州市政府调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。市政府的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度

为最小。请计算最小的公路总长度。 Input

测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N(N<100)和M;随后的M行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。 当N、M为0时,输入结束,该用例不被处理。 Output

对每个测试用例,在1行里输出最小的公路总长度,如果未能找到请输出\。 Sample Input 3 3 1 2 1 1 3 2 2 3 4 4 6 1 2 1 1 3 4 1 4 1 2 3 3 2 4 2 3 4 5 0 0

Sample Output

3 5

//9088ANSWER CODE1 #include using namespace std; int n,arc[100][100]; void Prim() {

int i,j,k,count_cc=1;//当count_cc=n时连通,否则不连通输出no found! int length=0;//最小的公路总长度(即最小生成树的代价) int lowcost[100],adjvex[100];

for (i=2; i<=n; i++) //初始化lowcost[]和adjvex[]

{ lowcost[i]=arc[1][i]; adjvex[i]=1; }

lowcost[1]=0; //将顶点0加入集合U中 for (i=2; i<=n; i++) { int weight_min=10000;k=0; for(j=2;j<=n;j++) { if(lowcost[j]!=0 && lowcost[j]!=10000 && lowcost[j]


2013级DS作业和实验参考答案总汇(1)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:南京工业大学2010-2011学年第二学期《高等数学》试卷和参考答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: