zoukankan      html  css  js  c++  java
  • 图的遍历

    最后的输出顺序是1 2 3 5 4
    也就是说,在访问每一个顶点的时候,会先对与此顶点有关联的点进行访问,再进行下一个;

    #include <cstdio>
    
    #include <iostream>
    
    using namespace std;
    
    
    int main()
    {
    	int i, j, n, m, a, b, cur, book[101] = { 0 }, e[101][101];
    	int que[10001], head, tail;
    	cin >> n >> m;
    	//初始化二维矩阵
    	for (i = 1; i <= n; i++)
    	{
    		for (j = 1; j <= n; j++)
    		{
    			if (i == j)e[i][j] = 0;
    			else e[i][j] = 99999999;//设为正无穷
    		}
    	}
    	//读入顶点之间的联系
    	for (i = 1; i <= m; i++)
    	{
    		cin >> a >> b;
    		e[a][b] = 1; e[b][a] = 1;
    	}
    	//队列的初始化
    	head = 1; tail = 1;
    	
    	//将一号顶点加入队列
    	que[tail] = 1; tail++; book[1] = 1;
    
    	//循环
    	while (head < tail && tail <= n)
    	{
    		//找到当前的顶点
    		cur = que[head];
    		for (i = 1; i <= n; i++)
    		{
    			//判断当前顶点与其他点是否构成连线
    			if (e[cur][i] == 1 && book[i] == 0)
    			{
    				que[tail] = i; tail++; book[i] = 1;
    			}
    			if (tail > n)break;
    		}
    		head++;
    	}
    	for (i = 1; i < tail; i++)
    	{
    		printf("%d ", que[i]);
    
    	}
    	getchar(); getchar();
    	return 0;
    }
    

    作者:Better又
    出处:https://www.cnblogs.com/lwyy1223-/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Java编译器API简介
    liblinear和libsvm区别
    spark和hadoop比较
    maxout激活函数
    FTRL算法
    NLP里面好的学习资料
    阿里妈妈MLR模型(论文)
    FM的推导原理--推荐系统
    GBDT+LR simple例子
    深度学习最全优化方法---来源于知乎
  • 原文地址:https://www.cnblogs.com/lwyy1223-/p/13542281.html
Copyright © 2011-2022 走看看