【MemSQL Start[c]UP 3.0 - Round 1 E】Desk Disorder
【链接】h在这里写链接
【题意】
【题解】
则是一棵树。那么写个例子就会发现,答案就是节点的个数。
如果n个点,那条边
会出现一个环(且恰好只有一个环);
如果是一个自环。那么答案为1.
因为所有人都不能动。->动了的话,那个自环上的人是无法走的。
如果这个环的长度大于等于2.
则答案为2.
因为除了环上的人,其他人都不能动。
且环上的人要么全动,要么全不动。
两种情况。
可以用并查集来判断有没有出现环。
如果是自环的话,答案直接设置为1就好。
如果没有环。
则答案为并查集的大小(找f(i)==i的根节点);
如果有环
答案就为2.
(各个连通块答案累乘就好)
【错的次数】
【反思】
【代码】
#include <bits/stdc++.h>
using namespace std; const int N = 2e5;
const long long MOD = 1e9+7; int n,f[N+10],cycle[N+10],size[N+10]; int ff(int x){ if (f[x]==x) return x;else return f[x] = ff(f[x]);} int main(){
//freopen("F:\\rush.txt","r",stdin);
ios::sync_with_stdio(0),cin.tie(0);
cin >> n;
for (int i = 1;i <= 2*n;i++) f[i] = i,size[i]=1;
for (int i = 1,x,y;i <= n;i++){
cin >> x >> y;
if (x==y){
cycle[ff(x)]=2;
continue;
}
int r1 = ff(x),r2 = ff(y);
if (r1!=r2){
f[r2] = r1;
size[r1]+=size[r2];
cycle[r1]|=cycle[r2];
}else
cycle[r1] = 1;
}
long long ans = 1;
for (int i = 1;i <= 2*n;i++)
if (ff(i)==i){
if (cycle[i]==1)
ans = ans*2%MOD;
else
if (cycle[i]==0)
ans = ans*size[i]%MOD;
}
cout << ans << endl;
return 0;
}
【MemSQL Start[c]UP 3.0 - Round 1 E】Desk Disorder的更多相关文章
- 【MemSQL Start[c]UP 3.0 - Round 1 C】 Pie Rules
[链接]h在这里写链接 [题意] 在这里写题意 [题解] dp[i][0] 第i个位置,bob没有决策权 dp[i][1] 第i个位置,bob有决策权 dp[n][0] = 0 ...
- 【MemSQL Start[c]UP 3.0 - Round 1 B】 Lazy Security Guard
[链接]h在这里写链接 [题意] 围成对应面积的方块最少需要多少条边. [题解] 有特定的公式的. 2*ceil(2*根号下(n)); -> 自己找下规律也很简单的. [错的次数] 0 [反思] ...
- 【MemSQL Start[c]UP 3.0 - Round 1 A】 Declined Finalists
[链接]h在这里写链接 [题意] 在这里写题意 [题解] max(最大值-25,0) [错的次数] 0 [反思] 在这了写反思 [代码] #include <bits/stdc++.h> ...
- 【Xamarin挖墙脚系列:Xamarin4.0的重大变更】
原文:[Xamarin挖墙脚系列:Xamarin4.0的重大变更] Windows下的变更不大,主要还是bug 的修复,性能的优化,API的扩展实现. 变化最大的是在Mac上的那个Xamarin.iO ...
- [No00006D]下载离线版的github for windows【以Github for Windows 3.0.110.为例】
目录 先上地址后讲原理: 原理: 11个目录的文件怎么一口气下载呢? 最后,把下好的文件批量名,同时将GitHub.exe.manifest也放到软件根目录下(与GitHub.exe同级): 今后的猜 ...
- MemSQL Start[c]UP 2.0 - Round 1(无聊练手B题)
http://codeforces.com/contest/452/problem/B B. 4-point polyline time limit per test 2 seconds memo ...
- MemSQL Start[c]UP 2.0 - Round 2 - Online Round
搞到凌晨4点一个没出,要gg了. A. Golden System http://codeforces.com/contest/458/problem/A #include<cstdio> ...
- MemSQL Start[c]UP 2.0 - Round 1
A. Eevee http://codeforces.com/contest/452/problem/A 字符串水题 #include<cstdio> #include<cstrin ...
- MemSQL Start[c]UP 2.0 - Round 2
反正晚上睡不着,熬到1点开始做比赛,6个题目只做了2个题目,而且手速还比较慢,待提升空间还很大呢. A题:给定两个0,1串(len<=100000), 但是不是普通的二进制串,而是q进制串,q ...
随机推荐
- 洛谷 P2117 小Z的矩阵
P2117 小Z的矩阵 题目描述 小Z最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G.对于N*N的矩阵A,A的所有元素均为0或1,则G(A)等于所有A[i][j]*A[j][i]的和对2取余 ...
- OpenStack_Swift源代码分析——Object-auditor源代码分析(2)
1 Object-aduitor审计详细分析 上一篇文章中,解说了Object-aduitor的启动,当中审计的详细运行是AuditorWorker实现的.在run_audit中实例化了Auditor ...
- C#变量的作用域
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Android Error:(1, 0) Gradle version 2.2 is required. Current version is 3.4.1.
我们在使用Android Studio的时候新建项目没什么问题的,但是当我们下载一份Github上的项目导入进去的时候却没法正常使用,其原因主要是gradle配置问题.而由于gradle这个玩意儿版本 ...
- 【例题 8-13 UVA - 11093】Just Finish it up
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 尺取法. 假设现在取[l..r]这一段. 然后发现累加的和小于0了. 那么方法只能是不走l..l+1这一段了 即delta递减(p[ ...
- HDOJ 5399 Too Simple
每个函数都必须是一个排列,经过连续的一段确定函数后数字不能少. 满足上面的条件的话,仅仅要有一个-1函数特别的排列一下就能够满足要求,剩下的能够任意填 没有-1的话特判 Too Simple Time ...
- menu-代码添加以及add方法参数意义
今天需要给一个menu动态添加一个item,先把方法记录如下 @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(Me ...
- dump var_dump print print_r的区别
dump var_dump print print_r的区别 一.总结 用dump()来打印就对了 1.echo和print:不能打印复合型和资源型数据: 2.var_dump()和print_r() ...
- Android 打造属于自己的RxBus
RxBus 通过RxJava实现Rxbus. 相信大家已经非常熟悉EventBus了.最近正在学习Rxjava,如果在项目中已经使用了Rxjava,使用RxBus来代替EventBus应该是不错的选择 ...
- JAVA Mail邮件实现发送
package com.test;import java.util.Date;import java.util.Properties;import javax.mail.Message;import ...