题解
2023-08-25 12:28:39
发布于:广东
20阅读
0回复
0点赞
错题水题搬出来干啥?
#include<bits/stdc++.h>
using namespace std;
const int maxn=377;
int n,p,f[maxn],s=0,ans=0;
vector<int> d[maxn],a[maxn];
void init(int u,int dep)
{
d[dep].push_back(u);
for(int i=0; i<a[u].size(); i++)
{
init(a[u][i],dep+1);
}
}
int work(int u,int t)
{
int ss=1; f[u]=t;
for(int i=0; i<a[u].size(); i++)
{
ss+=work(a[u][i],t);
}
return ss;
}
void dfs(int dep)
{
for(int i=0; i<d[dep].size(); i++)
{
if(f[d[dep][i]]) continue;
s+=work(d[dep][i],1); ans=max(ans,s);
dfs(dep+1);
s-=work(d[dep][i],0);
}
}
int main()
{
cin>>n>>p;
for(int i=1; i<=p; i++)
{
int x,y;
cin>>x>>y;
if(x>y) swap(x,y);
a[x].push_back(y);
}
init(1,1);
dfs(2);
cout<<n-ans;
}
这里空空如也
有帮助,赞一个