zoukankan      html  css  js  c++  java
  • PAT甲级1076Forwards on Weibo

    题目链接

    https://pintia.cn/problem-sets/994805342720868352/problems/994805392092020736

    题解

    题目要求

    • 给定一个社交网络,请计算某用户的最大转发量(只计算L层间接关注者,假设一条微博,每个人只能转发一次)。
    • 输入
      • N:正整数,不超过1000,用户的数量,索引为[1,N]
      • L:正整数,不超过6,需要计算的间接关注者的层数
      • N个用户分别关注了哪些用户:每个用户关注的用户列表
      • K:正整数,要查询的用户的数量
      • K个要查询的用户:
    • 输出

    解题思路

    • 需要判断层次的BFS:通过类来保存每个结点的层次即可

    代码

    // Problem: PAT Advanced 1076
    // URL: https://pintia.cn/problem-sets/994805342720868352/problems/994805392092020736
    // Tags: 图 BFS
    
    #include <iostream>
    #include <vector>
    #include <queue>
    using namespace std;
    
    const int MAXN = 1001;
    int n, l;
    bool visit[MAXN];
    vector<int> followers[MAXN];
    
    struct User{
        int id,layer;
    };
    
    int bfs(int tempID){
        queue<User> users;
        users.push({tempID, 0});
        visit[tempID] = true;
        int ret = 0;
        while (!users.empty()){
            User u = users.front();
            users.pop();
            for (auto it = followers[u.id].begin(); it != followers[u.id].end(); it++){
                if (!visit[*it] && u.layer < l){
                    visit[*it] = true;
                    users.push({*it, u.layer + 1});
                    ret++;
                }
            }
        }
        return ret;
    }
    
    int main()
    {
        scanf("%d %d", &n, &l);
        int tempUser, m;
        for(int i = 1; i <= n; i++){
            scanf("%d", &m);
            for(int j = 0; j < m; j++){
                scanf("%d", &tempUser);
                followers[tempUser].push_back(i);
            }
        }
    
        int k;
        scanf("%d", &k);
        while(k--){
            scanf("%d", &tempUser);
            fill(visit, visit + MAXN, false);
            printf("%d
    ", bfs(tempUser));
        }
        return 0;
    }
    

    作者:@臭咸鱼

    转载请注明出处:https://www.cnblogs.com/chouxianyu/

    欢迎讨论和交流!


  • 相关阅读:
    C
    C
    你好,欢迎到这里来
    数组专题
    web前端的性能优化
    MornUI 源码阅读笔记
    application tips
    [转]就这样,创建了自己的运行时共享库(RSL)
    [转]glew, glee与 gl glu glut glx glext的区别和关系
    编码相关了解
  • 原文地址:https://www.cnblogs.com/chouxianyu/p/13790469.html
Copyright © 2011-2022 走看看