图的广度优先遍历-06-图3 六度空间
来源:互联网 发布:nginx 80端口无法访问 编辑:程序博客网 时间:2024/05/29 17:49
- 题目
06-图3 六度空间 (30分) - 分析
本题需要输出距离不超过6的结点数占结点总数的百分比,首先肯定想到要用广度优先遍历(BFS),而且只需要遍历6层以内的结点。可以用一个变量level来记录层数,一旦达到6层便停止遍历,计算输出。 - 我的代码
#include<iostream>#include<queue>using namespace std;int const MAXN = 10001;int person[MAXN];int N,M;bool visited[MAXN];queue<int> Q;typedef struct NODE* ptrNode;struct NODE{ int data; struct NODE* link;};ptrNode heads[MAXN];void insertXY(int x, int y){ ptrNode t1,t2; t1 = (ptrNode)malloc(sizeof(struct NODE)); t1->data = y; t1->link = heads[x]->link; heads[x]->link = t1; t2 = (ptrNode)malloc(sizeof(struct NODE)); t2->data = x; t2->link = heads[y]->link; heads[y]->link = t2;}int BFS(int x){ int count = 1, level = 0, last = x, tail; int i; //初始化工作 while(!Q.empty()) Q.pop(); for(i=1;i<=N; i++){ visited[i] = false; } //开始搜索计数 visited[x] = true; Q.push(x); while(!Q.empty()){ int v = Q.front(); Q.pop(); ptrNode tmp = heads[v]->link; while(tmp != NULL){ if(!visited[tmp->data]){ visited[tmp->data] = true; Q.push(tmp->data); count++; tail = tmp->data; } tmp = tmp->link; } if(v == last){ level++; last = tail; } if(level == 6) break; } return count;} int main(){ #ifndef ONLINE_JUDGE freopen("666.txt","r",stdin); #endif int i,x,y; scanf("%d%d",&N, &M); for(i=1; i<=N; i++){ heads[i] = (ptrNode)malloc(sizeof(struct NODE)); heads[i]->data = i; heads[i]->link = NULL; } for(i=1; i<=M; i++){ scanf("%d%d",&x,&y); insertXY(x,y); } for(i=1; i<=N; i++){ int ans = BFS(i); printf("%d: %.2f%%\n", i, (float)ans*100/N); } return 0;}
阅读全文
0 0
- 图的广度优先遍历-06-图3 六度空间
- 图的广度优先遍历
- 图的广度优先遍历
- 图的广度优先遍历
- 图的广度优先遍历
- 图的广度优先遍历
- 图的广度优先遍历
- 图的广度优先遍历
- 图的广度优先遍历
- 图的广度优先遍历
- 图的广度优先遍历
- 图的广度优先遍历
- 图的广度优先遍历
- 图的广度优先遍历
- 图的遍历-(深度优先&广度优先)
- 图的遍历:深度优先、广度优先
- Graph(3)--图的遍历(深度优先&广度优先)
- 图的遍历-广度优先遍历
- Android 代码混淆打包
- 王家林 Scala 深入浅出实战经典视频教程
- Hibernate @Column、columnDefinition等简介
- Spring中文文档
- 多行文本超出用省略号代替,单击展开全部
- 图的广度优先遍历-06-图3 六度空间
- 低功耗蓝牙BLE之广播
- hill-climbing algorithm 爬山算法简介
- java权限修饰
- VS中常见的环境变量
- 日期的计算多少天 多少月 多少年后 前台通过了ajax调用后台处理获取返回值
- Qt下双屏的显示方法
- 汉诺塔问题及其变种
- Linux Shell 流程控制语句实例及自定义函数介绍