Codeforces Round 748 (Div. 3)---E. Gardener and Tree--深搜变种+贪心+数据结构

#include 
#define pb push_back
#define YES cout<<"YES"<<'\n';
#define NO cout<<"NO"<<'\n';
using namespace std;
using ll = long long;
void solve()
{
    ll n,k;cin>>n>>k;
    queuee;
    vectorq[n+10],dep(n+10),vis(n+10),j(n+10);
    ll x,y;
    for(ll i=1;i     {
        cin>>x>>y;
        q[x].push_back(y);
        q[y].push_back(x);
        vis[x]++;
        vis[y]++;
    }
    for(ll i=1;i<=n;i++)
    {
        if(vis[i]==1) //最外边
        {
            e.push(i);
            j[i]++;
            dep[i]=1;
        }
    }
    while(e.size())
    {
        ll x=e.front();
        e.pop();
        for(auto ed:q[x])
        {
            if(vis[ed]==1) continue;//最外边
            dep[ed]=dep[x]+1;//向内进一
            if(--vis[ed]==1) e.push(ed);//最后一次入队
        }
    }
    ll ans=0;
    for(ll i=1;i<=n;i++)
    {
        if(dep[i]<=k) ans++;
    }
    cout< }
int main()
{
    cin.tie(0);
    cout.tie(0);
    ios_base::sync_with_stdio( false );
    
    ll t;cin>>t;
    while( t-- ) solve();
    return 0;
}
 

你可能感兴趣的:(数据结构,c++,贪心算法,深度优先,迭代加深)