字节跳动笔试—抖音红人

题目描述:
这里写图片描述
这里写图片描述
解题思路:图的遍历

#include<bits/stdc++.h>
using namespace std;

bool bfs(vector<vector<int>>& v, vector<bool>& test, int val) {
    queue<int> q;
    q.push(val);
    int cnt = 1;
    int num = v.size();
    test[val] = true;
    while (!q.empty() && cnt < num) {
        int tmp = q.front();
        q.pop();
        for (int e : v[tmp]) {
            if (!test[e]) {
                ++cnt;
                test[e] = true;
                q.push(e);
            }
        }
    }
    return cnt == num;
 }

int main(){
    int n,m;
    cin >> n >> m;
    int a, b;
    vector<vector<int>> v(n);
    vector<bool> test(n, false);
    for (int i = 0; i < m; ++i) {
        cin >> a >> b;
        v[b-1].push_back(a-1);
    }
    int cnt = 0;

    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j)
            test[j] = false;
        cnt += bfs(v, test, i);
    }
    cout << cnt << endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/u014253011/article/details/82556976