```
#include<iostream>
#include<cmath>
using namespace std;
const int mmax=20001;
int mmin=0x7fffffff,n,m,k,x,y,cnt,ans,fa[mmax],dp[mmax],dis[mmax],s[mmax],w[mmax];
int find(int x)
{
if(fa[x]!=x)
{
int t=fa[x];
fa[x]=find(fa[x]);
dis[x]+=dis[t];
}
return fa[x];
}
void he(int x,int y)
{
int f1=find(x), f2=find(y);
if(f1!=f2)
{
fa[f1]=f2;
dis[x]=dis[y]+1;
}
}
int main()
{
cin>>n>>m>>k;
for(int i=1;i<=n;i++) fa[i]=i;
for(int i=1;i<=k;i++)
cin>>x>>y, he(x,y);
for(int i=1;i<=n;i++)
w[find(i)]=max(w[find(i)],dis[i]+1);
for(int i=1;i<=n;i++)
if(w[i]!=0) s[++cnt]=w[i];
for(int i=1;i<=cnt;i++)
for(int j=2*m;j>=s[i];j--)
dp[j]=max( dp[j] , dp[j-s[i]]+s[i] );
for(int i=1;i<=2*m;i++)
if(mmin>abs(dp[i]-m)) mmin=abs(dp[i]-m), ans=dp[i];
cout<<( ans!=0x7fffffff ? ans : 0 )<<endl;
return 0;
}
```
by 做梦都想AK @ 2019-03-30 14:53:41
~~正常~~
by SkyLiYu @ 2019-03-30 14:56:48
@[隔壁小邱](/space/show?uid=22539) 哭辽
by 做梦都想AK @ 2019-03-30 15:03:16
@[做梦都想AK](/space/show?uid=101528) 同哭辽
by 冰桨 @ 2019-03-30 16:22:06
@[Valentine丿磬](/space/show?uid=94973) dalao
by 做梦都想AK @ 2019-03-30 16:28:05
@[做梦都想AK](/space/show?uid=101528) julao orz
by 冰桨 @ 2019-03-30 16:45:25