void CreateUDG(AMGraph &G); //创建图,采用邻接矩阵存储 int DFS(AMGraph G, int v);//以v为起点深度优先遍历,求出各顶点值的和作为函数返回值
时间: 2024-01-21 09:04:55 浏览: 51
CreateUDG函数的实现代码如下:
```c
void CreateUDG(AMGraph &G)
{
int i,j,k;
int v1,v2,w;
printf("请输入顶点数和边数:\n");
scanf("%d%d",&G.vexnum,&G.arcnum);
printf("请输入各顶点的积分值:\n");
for(i=0;i<G.vexnum;++i)
scanf("%d",&G.vexs[i]);
for(i=0;i<G.vexnum;++i)
for(j=0;j<G.vexnum;++j)
G.arcs[i][j]=0;
printf("请输入各边的两个顶点和权值:\n");
for(k=0;k<G.arcnum;++k)
{
scanf("%d%d%d",&v1,&v2,&w);
i=LocateVex(G,v1);
j=LocateVex(G,v2);
G.arcs[i][j]=w;
G.arcs[j][i]=w;
}
}
```
DFS函数的实现代码如下:
```c
int DFS(AMGraph G, int v)
{
int i,sum=G.vexs[v];
visited[v]=1;
for(i=0;i<G.vexnum;++i)
if(G.arcs[v][i] && !visited[i])
sum+=DFS(G,i);
return sum;
}
```
其中visited数组用于标记是否已经访问过该顶点,sum用于累加顶点积分值。在函数中首先将起点的顶点积分值加入sum中,并将起点标记为已访问。然后遍历与起点相邻的未访问过的顶点,将其加入sum中,并以其为起点继续深度优先遍历。最后返回sum作为函数返回值,即为连通分量顶点积分和。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)