传送门1:http://www.usaco.org/index.php?page=viewproblem2&cpid=111

传送门2:http://www.lydsy.com/JudgeOnline/problem.php?id=2582

这道题蛮有意思的,首先对于不同的联通块,显然我们可以分别求出方案数,然后乘法原理得出最终结果。

对于每个联通块,只有三种情况:

1,有n个顶点,n - 1条边,那么这是一棵树,可以分别把每个顶点作为根,由儿子指向父亲,所以有n种方案

2,有n个顶点,n条边,那么只是一棵基环树。其中那个环上的点一定是根,因此这种情况不能换根,但是环上也可以顺时针指,逆时针指,因此有2种方案

3,有n个顶点,> n条边,那么方案数为0,这很显然

#include <cstdio>

const int maxn = 100005;
const long long mod = 1000000007LL; int n, m, fa[maxn], u, v, fu, fv, num_ver[maxn], num_edg[maxn];
long long ans = 1;
bool book[maxn];
struct Edge {
int u, v;
} a[maxn]; int getfa(int aa) {
return fa[aa] == aa? aa: fa[aa] = getfa(fa[aa]);
}
inline long long cal(int aa) {
if (num_edg[aa] == num_ver[aa] - 1) {
return num_ver[aa];
}
if (num_edg[aa] == num_ver[aa]) {
return 2LL;
}
return 0;
} int main(void) {
freopen("alliance.in", "r", stdin);
freopen("alliance.out", "w", stdout);
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; ++i) {
fa[i] = i;
}
for (int i = 0; i < m; ++i) {
scanf("%d%d", &a[i].u, &a[i].v);
fu = getfa(a[i].u);
fv = getfa(a[i].v);
if (fu != fv) {
fa[fu] = fv;
}
}
for (int i = 1; i <= n; ++i) {
fa[i] = getfa(i);
++num_ver[fa[i]];
}
for (int i = 0; i < m; ++i) {
++num_edg[fa[a[i].u]];
}
for (int i = 1; i <= n; ++i) {
if (!book[fa[i]]) {
ans = ans * cal(fa[i]) % mod;
book[fa[i]] = true;
}
}
printf("%I64d\n", ans);
return 0;
}

  

bzoj258 [USACO 2012 Jan Gold] Bovine Alliance【巧妙】的更多相关文章

  1. bzoj2581 [USACO 2012 Jan Gold] Cow Run【And-Or Tree】

    传送门1:http://www.usaco.org/index.php?page=viewproblem2&cpid=110 传送门2:http://www.lydsy.com/JudgeOn ...

  2. USACO翻译:USACO 2012 JAN三题(2)

    USACO 2012 JAN(题目二) 一.题目概览 中文题目名称 叠干草 分干草 奶牛联盟 英文题目名称 stacking baleshare cowrun 可执行文件名 stacking bale ...

  3. USACO翻译:USACO 2012 JAN三题(1)

    USACO 2012 JAN(题目一) 一.题目概览 中文题目名称 礼物 配送路线 游戏组合技 英文题目名称 gifts delivery combos 可执行文件名 gifts delivery c ...

  4. [USACO 2018 Jan Gold] Tutorial

    Link: USACO 2018 Jan Gold 传送门 A: 对于不同的$k$,发现限制就是小于$k$的边不能走 那么此时的答案就是由大于等于$k$的边形成的图中$v$所在的连通块除去$v$的大小 ...

  5. USACO翻译:USACO 2012 JAN三题(3)

    USACO 2012JAN(题目三) 一.题目概览 中文题目名称 放牧 登山 奶牛排队 英文题目名称 grazing climb lineup 可执行文件名 grazing climb lineup ...

  6. [USACO 2012 Open Gold] Bookshelf【优化dp】

    传送门1:http://www.usaco.org/index.php?page=viewproblem2&cpid=138 传送门2:http://www.lydsy.com/JudgeOn ...

  7. [USACO 2012 Mar Gold] Large Banner

    传送门:http://www.usaco.org/index.php?page=viewproblem2&cpid=127 又是一道这种题目,遇到一次跪一次,这次终于硬着头皮看懂了题解,但是谢 ...

  8. [USACO 2012 Feb Gold] Cow Coupons【贪心 堆】

    传送门1:http://www.usaco.org/index.php?page=viewproblem2&cpid=118 传送门2:http://www.lydsy.com/JudgeOn ...

  9. [USACO 2012 Jan Silver] Bale Share【DP】

    传送门:http://www.usaco.org/index.php?page=viewproblem2&cpid=107 没想到太不应该了,真的不应该啊! f[i][j][k]表示前i个包, ...

随机推荐

  1. spring mvc 选中多文件同时上传(利用input元素的multiple属性)

    原文:http://m.blog.csdn.net/article/details?id=51351388 <!DOCTYPE html> <html> <head> ...

  2. 国内代码托管平台(Git和SVN)

        Github(Git和SVN)https://github.com/ 可以说GitHub的出现完全颠覆了以往大家对代码托管网站的认识.GitHub不但是一个代码托管网站,更是一个程序员的SNS ...

  3. Hibernate之三态篇

    一.概况 (一)瞬时状态(暂时态) 在对象中假设对象刚被创建但没有被持久化的话就是瞬时态 特点: (1) 不和 Session 实例关联 (2)在数据库中没有和瞬时对象关联的记录 (二)持久状态 持久 ...

  4. openstack kolla多节点容器化环境安装

    好久没写随笔了,6月份趁着在公司没有太忙的事儿,把公司的服务器进行了虚拟化,采用的openstack当前的容器化方案kolla. 整体安装完的感受时,小白感觉自己是个大牛!哈哈,开玩笑,由于以前是开发 ...

  5. 使用Java对100以内偶数求和

    /** * 根据for循环的描述: for(变量初始化:循环条件:修改循环变量的值),求出100以内的所有偶数,for(int i = 0; i<=100; i+=2),把这些偶数累加到一个空的 ...

  6. WAMP的端口修改

    wamp集成了开源的利器mysql+apache+php,真的是有越来越火的趋势了,可是有些人,安装php的集成开发环境WAMP的时候,出现端口被占用了,无法连接服务器的时候, 这时,如果要修改WAM ...

  7. ExtJs 中获取 radiobutton 的值

    ExtJs中使用radiobutton,想在ExtJs本身代码中(注意,不是在后台喔)获取 radioButton 的值,居然发现很难,无从下手的感觉.后来在网上寻寻觅觅,痛苦摸索之后,真是大跌眼镜. ...

  8. java根据文件流判断文件类型(后缀名)

    import java.io.FileInputStream; public class FileType{ public static String bytesToHexString(byte[] ...

  9. linux下jiffies定时器和hrtimer高精度定时器【转】

    本文转载自:http://blog.csdn.net/dosculler/article/details/7932315 一.jiffies定时器,HZ=100,精度只能达到10ms. 注:采用jif ...

  10. regular expression 在线检测的网站

    http://regexone.com/   学习网站 http://regexone.com/lesson/optional_characters? http://regexone.com/less ...