c++ 图论

分类

1.方向

 若顶点v和u之间的边没有方向,则称这条边为无向边

 若一张图每条边都为无向边,则称这张图为无向图

 相反,为有向图

 2.简单图

简单图:在图中若不存在顶点带其自身的边,且同一条边不重复出现

概念

顶点的度:在无向图中,顶点v的度是指依附于该顶点的边数

顶点的入度:在有向图中,顶点v的入度是指以该顶点为弧头的弧的数目

顶点的出度:在有向图中,顶点v的出度是指以该顶点为弧尾的弧的数目

定理

1.无向图定理:所有顶点度数之和=边数的2倍

2.有向图定理:入度之和=出度之和=边数

开始学习特别特别特别特别特别特别特别难的内容啦

深度优先搜索DFS

void dfs(int u){//u:当前节点
	vis[u]=true;
	for(int& v:g[u]){//访问u连到的每个节点
		if(!vis[v]) dfs(v);
	}
}

广度优先搜索BFS

#include <bits/stdc++.h>
using namespace std;
int main()
{
	int graph[6][6]={
		{0,1,1,0,0,0},
		{1,0,0,1,1,0},
		{1,0,0,0,1,1},
		{0,1,0,0,0,1},
		{0,1,1,0,0,1},
		{0,0,1,1,1,0}
	};
	int start=0,end=5;
	queue<int> q;
	bool visited[6]={false};
	int distance[6]={0};
	q.push(start);
	visited[start]=true;
	while (!q.empty()){
		int curr=q.front();
		q.pop();
		for(int i=0;i<6;i++){
			if(graph[curr][i]==1&&!visited[i]){
				q.push(i);
				visited[i]=true;
				distance[i]=distance[curr]+1;
			}
		}
	}
	cout<<"The shortest distance from "<<start<<" to "<<end<<" is "<<distance[end]<<endl;
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值