图的根节点-数据结构作业。。
来源:互联网 发布:c语言while循环的用法 编辑:程序博客网 时间:2024/06/06 05:47
手写邻接表 BFS
#include <iostream>#include <queue>using namespace std;const int maxn = 100000;const int maxm = 300000;struct Graph {int NE , NV;int head[maxn];struct Node{int next , v;Node(){}Node(int a,int b):v(a) , next(b){}}E[maxm];void clear(int n) {NV = n;NE = 0;memset(head,-1,sizeof(int)*n);}inline void Insert(int u,int v) {E[NE] = Node(v , head[u]);head[u] = NE ++;}void Print() {for(int i = 0 ; i < NV ; i ++) {printf("%d:",i);for(int j = head[i]; j != -1; j = E[j].next){printf(" %d",E[j].v);}puts("");}}}G;int n, m, ctr;int visit[maxn]; void BFS(int cur) {queue<int> Q;Q.push(cur);visit[cur] = 1;while( !Q.empty() ){for(int i = G.head[Q.front()]; i != -1; i = G.E[i].next ){if(!visit[G.E[i].v]){visit[G.E[i].v] = 1;Q.push(G.E[i].v);ctr++;if(ctr >= n - 1) printf("%d为根节点\n", cur);}}Q.pop();}}int main(){cin >> n;//读入顶点数 G.clear(n);cin >> m;//读入边数int begin, end;for(int i = 0; i < m; ++i) {scanf("%d %d", &begin, &end);G.Insert(begin, end);}//遍历图 输出根节点for(int i = 0; i < n; ++i){memset(visit, 0, sizeof(visit));ctr = 0;BFS(i);}return 0;}
- 图的根节点-数据结构作业。。
- 数据结构——距离根节点为k的节点
- 数据结构的作业
- 数据结构作业多链表操作之寻找公共节点。
- 数据结构-单链表节点的获取
- 数据结构-单链表节点的删除
- 数据结构-单链表节点的删除
- JobTracker节点上的作业恢复RecoveryManager
- 数据结构第五次作业(图的基本操作实现)
- 数据结构OJ作业——图的遍历
- 数据结构例程——从根节点到每个叶子节点的路径之逆
- 数据结构作业。
- 数据结构作业
- 数据结构作业
- 数据结构作业
- 数据结构作业
- 数据结构作业
- 数据结构作业
- 手游开发者的渠道之困
- 深入理解Oracle索引(21):视图和小表是否应该加索引
- 关于WSARecv在IOCP使用中程序崩溃的问题
- 一个ASP.NET长文章分页显示函数
- 选择排序算法的PHP实现
- 图的根节点-数据结构作业。。
- ios网络请求 get——post
- 破解LanStar技术揭秘
- Super Mario
- 不一样的退出率(电商数字会说谎)
- 【折腾ubuntu】Ubuntu12.04安装windows版本的福昕阅读器
- UItextfield输入不了任何字符的解决办法
- centos下yum安装RabbitMQ[最顺利的一次]
- Ubuntu下使用摄像头