*1076. Forwards on Weibo
来源:互联网 发布:大连淘宝美工学校 编辑:程序博客网 时间:2024/05/24 05:23
用C写真是吃力= =
#include <stdio.h>#include <stdlib.h>typedef struct EdgeNode {int UserID;struct EdgeNode* next;}EdgeNode,*PEdgeNode;typedef struct VNode {int UserID;PEdgeNode FirstForward;}VNode;typedef int Position;struct QNode {int *Data; /* 存储元素的数组 */Position Front, Rear; /* 队列的头、尾指针 */int MaxSize; /* 队列最大容量 */};typedef struct QNode *Queue;int CntForwards(VNode Weibo[],int L,int S);void EnQueue(Queue Q, int X);int DeQueue(Queue Q);int IsEmpty(Queue Q);Queue CreateQueue(int MaxSize);int main(){VNode Weibo[1000];int N, L, i,FollowN,QueryNum,S,cnt,Follow;scanf("%d %d", &N, &L);for (i = 0; i < N; i++) {Weibo[i].UserID = i + 1;Weibo[i].FirstForward = NULL;}for (i = 0; i < N; i++) {scanf("%d", &FollowN);while (FollowN--) {PEdgeNode PtrForward = (PEdgeNode)malloc(sizeof(EdgeNode));scanf("%d", &Follow);PtrForward->UserID = i+1;PtrForward->next = Weibo[Follow-1].FirstForward;Weibo[Follow - 1].FirstForward = PtrForward;}}//for (PEdgeNode w = Weibo[4 - 1].FirstForward; w; w = w->next) /*要设visit【】*///printf("*%d*", w->UserID);scanf("%d", &QueryNum);while (QueryNum--) {scanf("%d", &S);cnt = CntForwards(Weibo, L,S);printf("%d\n", cnt);}return 0;}int CntForwards(VNode Weibo[], int L,int S){if (L == 0)return 0;int cnt = 1, v, level = 0, last =1,visited[1000],first=0;for (v = 0; v < 1000; v++)visited[v] = 0;Queue Q = CreateQueue(1000);PEdgeNode w;EnQueue(Q,S);visited[S-1] = 1;while (!IsEmpty(Q)) {v=DeQueue(Q);first++;for (w = Weibo[v - 1].FirstForward; w; w = w->next) {if (!visited[(w->UserID) - 1]) {visited[(w->UserID) - 1] = 1;EnQueue(Q, w->UserID);cnt++;}}if (first == last) {level++;last = cnt;}if (level == L)break;}free(Q);return cnt-1;}Queue CreateQueue(int MaxSize){Queue Q = (Queue)malloc(sizeof(struct QNode));Q->Data = (int *)malloc(MaxSize* sizeof(int));Q->Front = Q->Rear = 0;Q->MaxSize = MaxSize;return Q;}void EnQueue(Queue Q, int X){Q->Rear = (Q->Rear + 1) % Q->MaxSize;Q->Data[Q->Rear] = X;}int IsEmpty(Queue Q){return (Q->Front == Q->Rear);}int DeQueue(Queue Q){Q->Front = (Q->Front + 1) % Q->MaxSize;return Q->Data[Q->Front];}
0 0
- 1076. Forwards on Weibo
- 1076.Forwards on Weibo
- 1076. Forwards on Weibo
- 1076. Forwards on Weibo
- 1076. Forwards on Weibo
- *1076. Forwards on Weibo
- PAT 1076. Forwards on Weibo
- 1076. Forwards on Weibo (30)
- 1076. Forwards on Weibo (30)
- 1076. Forwards on Weibo (30)
- 1076. Forwards on Weibo (30)
- 1076. Forwards on Weibo (30)
- 1076. Forwards on Weibo (30)
- 1076. Forwards on Weibo (30)
- 1076. Forwards on Weibo (30)
- 1076. Forwards on Weibo (30)
- 1076. Forwards on Weibo (30)
- 1076. Forwards on Weibo (30)
- 用CNN及MLP等方法识别minist数据集
- 消息队列RabbitMQ入门介绍
- 多线程,为每个线程维护变量副本的ThreadLocal
- 1268 和为K的组合
- CSS实现水平垂直居中的几种方法
- *1076. Forwards on Weibo
- 省份下拉菜单实现
- codeforces 2B 解题报告
- matlab 字符串替换
- 访问量分类统计(QQ,微信,微博,网页,网站APP,其他)
- 内容站入门-聚茶吧
- A. Lesha and array splitting
- 小程序服务端集成微信支付
- android 怎么播放视频?