TJ
2024-08-20 15:02:41
发布于:上海
8阅读
0回复
0点赞
#include<iostream>
#include<queue>
#include<vector>
using namespace std;
int main(){
int t;cin>>t;
for(int i=1;i<=t;i++){
int n,id,x,y,t,cnt=0;
bool vis[10001]={}; //标记数组
vector<int>fans[10001]; //邻接表
queue<int>q; //BFS用
cin>>n>>id;
vis[id]=1;
while(n--){
cin>>x>>y;
fans[y].push_back(x);
if(y==id) {
q.push(x);
vis[x]=1;
}
}//存入邻接表
while(q.size()){
t=q.front();
q.pop();
for(int i=0;i<fans[t].size();i++) {
if(!vis[fans[t][i]]) {
q.push(fans[t][i]);
vis[fans[t][i]]=1;
}
}
}//BFS
for(int i=1;i<=10000;i++) {
cnt+=vis[i]&&i!=id;
}//记录
cout<<"Case #"<<i<<": "<<cnt<<endl; //输出
}
}
时间复杂度:
这里空空如也
有帮助,赞一个