## PAT A1076

mac2024-06-04  42

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; }
最新回复(0)