zoukankan      html  css  js  c++  java
  • 判断无向图G是否连通

    判断无向图G是否连通

    #include "stdafx.h"
    #include<vector>
    #include<iostream>
    
    using namespace std;
    #define N 9  
    typedef struct{
    	int vexnum, arcnum;
    	char vexs[N];
    	int matirx[N][N];
    }graph;
    
    graph g;
    int a[N] = { 0 };
    
    // 初始化图数据    
    // 0---1---2---3---4---5---6---7---8---    
    // A---B---C---D---E---F---G---H---I---    
    void initiate_graph()
    {
    	// A-D, A-E  
    	g.matirx[0][3] = 1;
    	g.matirx[3][0] = 1;
    	g.matirx[0][4] = 1;
    	g.matirx[4][0] = 1;
    	// B-C    
    	g.matirx[1][2] = 1;
    	g.matirx[2][1] = 1;
    	// D-E, D-G    
    	g.matirx[3][4] = 1;
    	g.matirx[4][3] = 1;
    	g.matirx[3][6] = 1;
    	g.matirx[6][3] = 1;
    	// E-F, E-H    
    	g.matirx[4][5] = 1;
    	g.matirx[5][4] = 1;
    	g.matirx[4][7] = 1;
    	g.matirx[7][4] = 1;
    	// F-H, F-I    
    	g.matirx[5][7] = 1;
    	g.matirx[7][5] = 1;
    	g.matirx[5][8] = 1;
    	g.matirx[8][5] = 1;
    	// G-H    
    	g.matirx[6][7] = 1;
    	g.matirx[7][6] = 1;
    	// H-I    
    	g.matirx[7][8] = 1;
    	g.matirx[8][7] = 1;
    
    }
    
    //广度优先遍历一遍,如果不能经过所有节点,则不是连通图
    bool IsConnectedGraph()
    {
    	vector<int>vec;
    	vector<int>aa;
    	int k = 0;
    	vec.push_back(0);
    	a[0] = 1;
    	while (vec.size() != 0)
    	{
    		while (k < vec.size())
    		{
    			cout << vec[k] << endl;
    			int mm = 0;
    			while (mm < N)
    			{
    				if (g.matirx[vec[k]][mm] == 1)
    				{
    					if (a[mm] != 1)
    					{
    						aa.push_back(mm);
    						a[mm] = 1;
    					}
    				}
    				mm++;
    			}
    			k++;
    		}
    		vec = aa;
    		k = 0;
    		aa.clear();
    	}
    	
    	for (int i = 0; i < N; i++)
    		if(a[i]==0)
    <span style="white-space:pre">			</span>return false;
    	return true;
    }

    很简单,广度优先遍历一遍,如果不能经过所有节点,则不是连通图


    版权声明:

  • 相关阅读:
    linux--文件夹下批量改动IP
    Effective C++ 条款24
    ARMv8 Linux内核异常处理过程分析
    VS2010升级VS2013后,出现没有定义类型“PowerPacks.ShapeContainer”错误解决方法
    利用Nginx构建负载均衡server
    getline与get函数的区别
    Linking Containers Together
    获取不同机型外置SD卡路径
    查看linux系统状态
    Linux 开机自检的设置(tune2fs和fsck)
  • 原文地址:https://www.cnblogs.com/walccott/p/4956896.html
Copyright © 2011-2022 走看看