一个广搜解决,easy
#include <iostream> #include <queue> using namespace std; int main() { int n,m,A; cin>>n>>A>>m; int i,j,k; vector< vector<int> > v(n); vector< int > flag(n,0); queue< int > q; for(i=0;i<m;i++) { int l,r; char douhao; cin>>l>>douhao>>r; v[l].push_back(r); v[r].push_back(l); } q.push(A); flag[A]=1; int total=0; while(!q.empty()) { int tem=q.front(); q.pop(); for(j=0;j<v[tem].size();j++) { if(flag[v[tem][j]]==0) { flag[v[tem][j]]=1; q.push(v[tem][j]); total++; } } } cout << total - v[A].size() << endl; return 0; }