D2T1:
此题的解法在于割边,可以枚举每一次割边的情况,最后统计结果,输出最小的可能。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<vector>
#include<algorithm>
const int Maxn = 5005;
using namespace std;
int cnt;
int head[Maxn];
struct edge{
int u,v,next;
}e[Maxn<<1];
void adde(int u,int v){
e[cnt].u=u;
e[cnt].v=v;
e[cnt].next=head[u];
head[u]=cnt++;
}
vector <int> vec[Maxn];
int n,m;
int ans[Maxn];
int k[Maxn];
int x,y;
int dep;
bool vis[Maxn];
void dfs(int u,int fa){
if(vis[u])
return;
vis[u]=1;
k[++dep]=u;
for(int i=0;i<vec[u].size();i++){
int v=vec[u][i];
if(v==f