zoukankan      html  css  js  c++  java
  • 无向图的遍历连通性

    【问题描述】 根据输入的图的邻接矩阵A,判断此图的连通分量的个数。
    【输入形式】第一行为图的结点个数n,之后的n行为邻接矩阵的内容,每行n个数表示。其中A[i][j]=1表示两个结点邻接,而A[i][j]=0表示两个结点无邻接关系。
    【输出形式】输出此图连通分量的个数。
    【样例输入】
    5
    0 1 1 0 0
    1 0 1 0 0
    1 1 0 0 0
    0 0 0 0 1
    0 0 0 1 0
    【样例输出】
    2
    【样例说明】邻接矩阵中对角线上的元素都用0表示。(单个独立结点,即与其它结点都没有边连接,也算一个连通分量)

     1 /tps://www.cnblogs.com/ITgaozy/p/5187483.html
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4 #define MAX 1000
     5 #define MAX_NUM 100 //最大顶点数
     6 typedef struct Graph{
     7 
     8    char vertex[MAX_NUM];//节点信息 各个顶点的名字 比如叫ABCD啊
     9    int arcs[MAX_NUM][MAX_NUM];//图的邻接矩阵  就是如果顶点带权值的时候 也是存在这 就是具体的数字,不是0/1了,0的话估计代表无穷
    10    int vertexs,brim;//前者是节点数 后者是矩阵边数
    11 }Graph;
    12 int visited[MAX];//是否访问过 给dfs用的全局数组
    13 void CreateGraph(Graph *graph){
    14          int i,j;
    15          cin>>graph->vertexs;//输入图的节点个数
    16          for(i=0;i<graph->vertexs;i++){
    17             for(j=0;j<graph->vertexs;j++){
    18                 cin>>graph->arcs[i][j];//输入矩阵信息
    19             }
    20          }
    21 }
    22 void DFS(Graph graph,int v){ //从i这个节点开始走 一直走到自己能走到的头
    23          visited[v]=1;//访问过这个节点了 先变成1
    24          int i;
    25          for(i=0;i<graph.vertexs;i++){
    26             if(graph.arcs[v][i]!=0&&visited[i]!=1){
    27                 DFS(graph,i);
    28             }
    29          }
    30 
    31 
    32 }
    33 int main(){
    34 
    35     Graph g;
    36     int i,sum=0;
    37     CreateGraph(&g);//这里传递过去的是地址 因为要更改信息啊
    38     visited[MAX]=0;//初始化为0;
    39     for(i=0;i<g.vertexs;i++){
    40         if(visited[i]!=1){//还没有被访问过的话
    41             DFS(g,i);//这里就是值传递了
    42             sum++;
    43         }
    44     }
    45      cout<<sum<<endl;
    46      return 0;
    47 }
  • 相关阅读:
    Java第十三天,内部类
    Java第十二天,权限修饰符
    Java面向对象基础
    opencv配置(win10+VS2015+opencv3.1)
    malloc函数
    C++用new创建对象和不用new创建对象的区别解析
    字符串匹配KMP算法中Next[]数组和Nextval[]数组求法
    C++将一个数组内容赋给另一个数组
    C++中的const和指针组合
    通过图片对比带给你不一样的KMP算法体验
  • 原文地址:https://www.cnblogs.com/yundong333/p/11009441.html
Copyright © 2011-2022 走看看