PAT A1076 图的遍历
#include <bits/stdc++.h>
using namespace std
;
struct node
{
int data
;
int layer
;
};
vector
<node
> m
[1010];
bool vis
[1010]={false};
int n
,L
,x
;
int bfs()
{
int cnt
=0;
node now
;
now
.data
=x
;
now
.layer
=0;
queue
<node
> q
;
q
.push(now
);
vis
[now
.data
]=true;
while(!q
.empty())
{
node a
=q
.front();q
.pop();
int v
=a
.data
;int la
=a
.layer
;
for(int i
=0;i
<m
[v
].size();i
++)
{
m
[v
][i
].layer
=la
+1;
if(vis
[m
[v
][i
].data
]==false&&m
[v
][i
].layer
<=L
)
{
q
.push(m
[v
][i
]);
vis
[m
[v
][i
].data
]=true;
cnt
++;
}
}
}
return cnt
;
}
int main()
{
cin
>>n
>>L
;
for(int i
=1;i
<=n
;i
++)
{
node tp
;
tp
.data
=i
;
int k
,a
;cin
>>k
;
while(k
--)
{
cin
>>a
;
m
[a
].push_back(tp
);
}
}
int q
;cin
>>q
;
while(q
--)
{
cin
>>x
;
memset(vis
,false,sizeof(vis
));
int ans
=bfs();
cout
<<ans
<<endl
;
}
return 0;
}
转载请注明原文地址: https://mac.8miu.com/read-493470.html