#include<iostream>
#include<vector>
using namespace std;
int n,m;
struct node
{
vector<int> to;
bool isgoout;
node(){isgoout = false;}
};
node nodes[100005];
bool havehuan(int form,int xnode)
{
bool ans = false;
int x = 0;
while(x < nodes[xnode].to.size())
{
if(!nodes[nodes[xnode].to[x]].isgoout)
{
nodes[nodes[xnode].to[x]].isgoout = true;
ans = (ans || havehuan(xnode,nodes[xnode].to[x]));
}
else if(!nodes[xnode].to[x] == form)
{
ans = true;
}
else
{
nodes[xnode].to.erase(nodes[xnode].to.begin() + x);
x--;
}
x++;
}
return ans;
}
int main()
{
cin >> n >> m;
for(int i = 1;i <= m;i++)
{
int a,b;
cin >> a >> b;
nodes[a].to.push_back(b);
nodes[b].to.push_back(a);
}
int ans = 0;
for(int i = 1;i <= n;i++)
{
if(!nodes[i].isgoout)
{
nodes[i].isgoout = true;
if(!havehuan(0,i))
{
ans++;
}
}
}
cout << ans;
return 0;
}
为什么错了?" #26测试点