捞
查看原帖
捞
1038710
AutumnQ楼主2024/1/28 09:38

AT上是25AC,9WA

#include<bits/stdc++.h>
using namespace std;
vector<int> G[2020];
int bian[2020][3];
bool vis[2020];
int k,n,ans=0x3f3f3f3f;
int cnt;
void dfs(int u,int d,int k){
    if(d>k)return;
    vis[u]=true;
    for(int i=0;i<G[u].size();i++){
        int v=G[u][i];
		if(vis[v])continue;
        dfs(v,d+1,k);
    }
}
void dfss(int u,int d,int k){
    if(d>k){
		cnt++;
		return;
	}
    for(int i=0;i<G[u].size();i++){
        int v=G[u][i];
		if(vis[v])continue;
		vis[u]=true;
        dfs(v,d+1,k);
    }
}
int main(){
	cin>>n>>k;
	int u,v;
	for(int i=1;i<n;i++){
		cin>>bian[i][1]>>bian[i][2];
		u=bian[i][1],v=bian[i][2];
		G[u].push_back(v);
		G[v].push_back(u);
	}
	if(k&1){
        for(int i=1;i<n;i++){
      		int cnt=0;
      		dfss(bian[i][1],0,k>>1);
      		dfss(bian[i][2],0,k>>1);
      		ans=min(ans,cnt);
      	}
    }else{
    	for(int i=1;i<=n;i++){
            memset(vis,0,sizeof(vis));
            dfs(i,0,k>>1);
            int tt=0;
            for(int i=1;i<=n;i++){
            	if(vis[i])tt++;
            }
            ans=min(ans,n-tt);
        }
        
    }
    cout<<ans<<endl;
} 
2024/1/28 09:38
加载中...