PAT 1076
来源:互联网 发布:怎么关闭软件网络禁用 编辑:程序博客网 时间:2024/06/14 10:40
1076. Forwards on Weibo (30)
关键是读懂题目,然后用图的广度遍历即可。
比如sample里的
7 33 2 3 402 5 62 3 12 3 41 41 52 2 6用户1关注了3个人:2 3 4,因此可以转发2,3, 4的微博。
#include <stdio.h>#define N 1001void BFS(int path[][N], int n, int s, int deep, int *e);int main(){ int followers[N][N]; int n, l; int m, i, j, k; int each[N]; // every users's followers in deep l scanf("%d %d", &n, &l); for (i = 1; i <= n; ++i) { for (j = 1; j <= n; ++j) { followers[i][j] = 0; } } // get each user's followers for (i = 1; i <= n; ++i) { scanf("%d", &m); for (j = 0; j < m; ++j) { scanf("%d", &k); followers[k][i] = 1; // i follows k, so i can foward k's message } } for (i = 1; i <= n; ++i) { BFS(followers, n, i, l, each); } scanf("%d", &m); for (j = 0; j < m; ++j) { scanf("%d", &k); printf("%d\n", each[k]); } return 0;}void BFS(int path[][N], int n, int s, int deep, int *e){ int visited[N]; int queue[N]; int front = 0, rear = 1; int prerear; int i, j, k; int level = 1; int count = 0; for (i = 1; i <= n; ++i) { visited[i] = 0; } visited[s] = 1; queue[front] = s; while(front < rear) { prerear = rear; ++ level; while(front < prerear) { j = queue[front++]; for (k = 1; k <= n; ++k) { if (visited[k] == 0 && path[j][k]) { visited[k] = 1; ++ count; queue[rear++] = k; } } } if (level > deep) break; } e[s] = count;}
0 0
- PAT 1076
- pat 1076
- pat 1076
- PAT Advanced Level 1076
- pat解题报告【1076】
- pat-advanced(1073-1076)
- PAT(甲级)1076
- 浙大PAT甲级 1076
- PAT甲级1076
- pat
- 【PAT】
- PAT
- PAT
- PAT
- PAT
- PAT
- PAT
- PAT
- 二维数组、指针数组、数组指针
- mount命令中offset参数的意义
- CentOS下Hadoop伪分布模式安装笔记
- 线程同步和异步
- velocity的应用
- PAT 1076
- 第二周项目4-玩时间
- 线程安全
- NO CD-ROM driver to use; GCDROM not loaded!
- 关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
- html 记录
- Java:String和Date、Timestamp之间的转换
- http://vanilla-js.com/
- hive 中 Order by, Sort by ,Dristribute by,Cluster By 的作用和用法<转>