vector<vector<int>> edges; // 邻接矩阵
vector<int> indeg;
bool bfs() {
queue<int> q;
for (int i = 0; i < indeg.size(); i++) {
if (indeg[i] == 0) {
q.push(i);
}
}
int visited = 0;
while (!q.empty()) {
visited++;
int u = q.front();
q.pop();
for (auto &v : edges[u]) {
indeg[v]--;
if (indeg[v] == 0) {
q.push(v);
}
}
}
return visited = indeg.size();
}