[USACO12JAN]牛联盟Bovine Alliance

传送门https://www.luogu.org/problemnew/show/P3043

其实这道题十分简单。。看到大佬们在用tarjan缩点,并查集合并。。。。

蒟蒻渣渣禹都不会。

渣渣禹发现,给出的图经过处理之后会出现:

环。

不是环。

不是环的情况我们有n中匹配方式(n为其点的个数)
是环的情况我们只有两种匹配方式,顺时针匹配和逆时针匹配。

所以我们dfs处理出图中有多少个环,和不是环的个数。

ans 初始为1.

遇到环ans乘二,否则ans乘n(n为这个不是环的点的个数)。

结束咯w。
#define B cout << "BreakPoint" << endl;
#define O(x) cout << #x << " " << x << endl;
#define O_(x) cout << #x << " " << x << " ";
#define Msz(x) cout << "Sizeof " << #x << " " << sizeof(x)/1024/1024 << " MB" << endl;
#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#include<stack>
#define LL long long
#define N 100005
#define p 1000000007
using namespace std;
inline int read() {
	int s = 0,w = 1;
	char ch = getchar();
	while(ch < ‘0‘ || ch > ‘9‘) {
		if(ch == ‘-‘)
			w = -1;
		ch = getchar();
	}
	while(ch >= ‘0‘ && ch <= ‘9‘) {
		s = s * 10 + ch - ‘0‘;
		ch = getchar();
	}
	return s * w;
}
int to[2 * N],nxt[2 * N],head[2 * N],vis[N],tot;
int tmp,res;
LL ans = 1;
void add(int u,int vis) {
	to[++tot] = vis;
	nxt[tot] = head[u];
	head[u] = tot;
	return ;
}
void dfs(int x) {
	vis[x] = 1;
	tmp++;
	for(int i = head[x]; i; i = nxt[i],res++)
		if(!vis[to[i]])
			dfs(to[i]);
}
int n,m;
void init() {
	n = read(),m = read();
	for(int i = 1; i <= m; i++) {
		int x = read(),y = read();
		add(x,y);
		add(y,x);
	}
}
void solve() {
	for(int i = 1; i <= n; i++) {
		if(!vis[i]) {
			tmp = res = 0;
			dfs(i);
			if(tmp > res / 2)
				ans = ans * tmp % p;
			else
				if(tmp == res / 2)
					ans = ans * 2 % p;
			else ans = 0;
		}
	}
	printf("%lld",ans);
}
int main(){
	init();
	solve();
	return 0;
}

  

 

原文地址:https://www.cnblogs.com/excellent-zzy/p/10786285.html

时间: 2024-11-08 02:24:09

[USACO12JAN]牛联盟Bovine Alliance的相关文章

洛谷P3043 [USACO12JAN]牛联盟Bovine Alliance

P3043 [USACO12JAN]牛联盟Bovine Alliance 题目描述 Bessie and her bovine pals from nearby farms have finally decided that they are going to start connecting their farms together by trails in an effort to form an alliance against the farmers. The cows in each

【题解】 P3043 [USACO12JAN]牛联盟Bovine Alliance

题意:现在有$n$个点,$m$条边的图,$1 \leq m \leq n$,让点和其所连边进行配对,一个点或边只能配对一次,所有边必须配对,而点可以无需配对 这题有思维无码量还是比较友好的 现在我们有一张连通图,设它边数为$m$,点数为$n$,显然$m \ge n-1$ 根据题意,一个点只能和一条边配对,自然的若在当前图中$m > n$,则是无解的 接下来进行分类讨论 $m=n$的情况下,有点类似**基环树**的感觉...思考和环有关的性质,若现在有一条环,每个点要和一条边进行匹配,不难发现匹配

洛谷P2950 [USACO09OPEN]牛绣Bovine Embroidery

P2950 [USACO09OPEN]牛绣Bovine Embroidery 题目描述 Bessie has taken up the detailed art of bovine embroidery. Cows embroider a cloth mounted in a circular hoop of integer radius d (1 <= d <= 50,000). They sew N (2 <= N <= 50,000) threads, each in a s

BZOJ 2582: [Usaco2012Jan]Bovine Alliance

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2582 解:这道题是老师给我们拿来当做考试的,结果考的时候,我在判断无向图联通块时,满脑子tarjan...完全忘了并查集...最后用了深搜,然而竟然92分?? 这道题就是用并查集判断出分别的联通块,然后在一个联通块中, if (u==e) 方案数为u(点的数量) if (u==e-1) 方案数为 2 if (u<e) 无解... 然后乘起来就可以了 #include<iostream&

医学领域一些较新的词汇中英文对照

AARP [=American Association of Retired Persons]美国退休者协会 abscesses 脓肿 abstinence 戒酒 acetylcholine 乙酰胆碱 acrylamide 丙烯酰胺 Acting Deputy Commissioner for Policy 政策代理副专员 actinic keratosis 光化性角化病 activity 活度 acylcarnitines 酰基肉毒碱 adhesive pads 粘性衬垫 Administra

如今仍在工作的12名最“屌”的程序员

版权声明:本文转自创业邦 人们每天使用的App,以及玩儿的电子游戏不是凭空就有的,而是程序员笔耕不辍,靠着他们一行行的代码开发出来的. 当然,那些App应用.网页.甚至是整个互联网本身,都需要依靠平台和硬件来运行.更重要的是,就连人们构建这些平台所需要的编程语言,其实也是需要有人开发出来.那么问题来了,站在编程金字塔顶端的那些人,都是谁呢? 1.Linus Torvalds,他在赫尔辛基大学的宿舍里开发了Linux,一款免费的操作系统.如今,Linux已经成为了全球很多大型数据中心,超级计算机,

现在仍在工作的12名最“屌”的程序猿

人们每天使用的App.以及玩儿的电子游戏不是凭空就有的.而是程序猿笔耕不辍.靠着他们一行行的代码开发出来的. 当然.那些App应用.网页.甚至是整个互联网本身.都须要依靠平台和硬件来执行.更重要的是,就连人们构建这些平台所须要的编程语言,事实上也是须要有人开发出来.那么问题来了,站在编程金字塔顶端的那些人,都是谁呢? 1.Linus Torvalds,他在赫尔辛基大学的宿舍里开发了Linux,一款免费的操作系统.现在,Linux已经成为了全球非常多大型数据中心,超级计算机.以及server群最受

易佰店:阿里巴巴成美国零售商头号公敌

淘宝安全交易平台 www.xunjie36.com 淘宝店铺出售www.360feiyue.com 淘宝店铺交易www.360feiyue.com[关键词]淘宝安全交易平台 www.xunjie36.com 淘宝店铺出售www.360feiyue.com 淘宝店铺交易www.360feiyue.comQQ 商业街公平联盟的乔舒亚巴卡表示:"我们相信,阿里巴巴迟早会利用销售税的漏洞."这个零售业联盟的成员还包括数千家规模较小的商店. 目前,阿里通过其全球零售服务阿里巴巴全球速卖通(Ali

管理从砖瓦进化为人——浅谈传统软件工程到敏捷软件开发之变革

管理从砖瓦进化为人 --浅谈传统软件工程到敏捷软件开发之变革 前言 如果把软件开发过程比作修筑一座建筑的话,传统的软件工程方法对人的管理就像是把人化作一砖一瓦,秩序地堆砌,一层一层构建起摩天大厦. 显然地,人是不同于砖瓦那样的死物的.人作为一种复杂的动物,软件开发者会有喜怒哀乐,枯燥重复的工作内容会使他们提不起兴趣而缺乏激情:客户想法会随变动的现实而一天天有所转变,软件需求很难保持一成不变:开发者与测试者对于项目的认识会存在差异,而差异将导致效率的降低--因而传统的有些"反人类天性"的