CSP-S 例题19-2 边的统计

描述

n个结点,用n-1条边建立树。

现在添加m条边。n-1条边中切断一条树边,m条边中也切断一条边,求切割后,能够使这个无向图不再连通的切割方案数。

注:即使只切断一条树边就可以使图不连通,你也需要再切断m中的一条边。

输入描述

第一行包含两个整数 n 和 m;
之后 n - 1 行,每行包括两个整数 a 和 b,表示 a 和 b 之间有一条主要边;
之后 m 行以同样的格式给出附加边。

输出描述

输出方案数。

样例输入 1 

4 1
1 2
2 3
1 4
3 4

样例输出 1 

3

提示

数据范围与提示:

2≤n≤50,000,1≤m≤100,000

#include <bits/stdc++.h>
#define maxn 100010
using namespace std;
struct node
{
    int u, v, nxt;
} edge[maxn << 1];
int deep[maxn], head[maxn], cnt, lp[maxn][30], p[maxn];
void add(int u, int v)
{
    ++cnt;
    edge[cnt].u = u;
    edge[cnt].v = v;
    edge[cnt].nxt = head[u];
    head[u] = cnt;
}
void dfs1(int u, int fa)
{
    deep[u] = deep[fa] + 1;
    lp[u][0] = fa;
    for (int 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值