位元組跳動筆試—抖音紅人
阿新 • • 發佈:2019-01-09
題目描述:
解題思路:圖的遍歷
#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;
}