codeforces 711D Directed Roads(DFS)
题目链接:http://codeforces.com/problemset/problem/711/D
思路:由于每个点出度都为1,所以没有复杂的环中带环。DFS遍历,若为环则有2^k-2种,若为链则为2^k种。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+10;
const int mod=1e9+7;
int v[N],vis[N],num,times[N],c[N];
ll ans=1;
ll quickpow(ll a,ll b)
{
ll res=1;
while(b)
{
if(b&1)
res*=a;
res%=mod;
a*=a;
a%=mod;
b>>=1;
}
return res;
}
void dfs(ll i,ll x)
{
if(times[i])
{
if(times[i]==num)//如果属于本次遍历,则有环存在
{
ans*=quickpow(2,x-c[i])-2;//环部分
ans%=mod;
ans*=quickpow(2,c[i]);//链部分
ans%=mod;
return;
}
ans*=quickpow(2,x);//未找到环,只有链
ans%=mod;
return;
}
times[i]=num;
c[i]=x;
dfs(v[i],x+1);
}
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",v+i);
for(int i=1;i<=n;i++)
{
if(!times[i])
num++,dfs(i,0);
}
printf("%I64d\n",ans);
return 0;
}
codeforces 711D Directed Roads(DFS)的更多相关文章
- Codeforces 711D Directed Roads - 组合数学
ZS the Coder and Chris the Baboon has explored Udayland for quite some time. They realize that it co ...
- CodeForces 711D Directed Roads (DFS判环+计数)
题意:给定一个有向图,然后你可能改变某一些边的方向,然后就形成一种新图,让你求最多有多少种无环图. 析:假设这个图中没有环,那么有多少种呢?也就是说每一边都有两种放法,一共有2^x种,x是边数,那么如 ...
- CodeForces 711D Directed Roads (DFS找环+组合数)
<题目链接> 题目大意: 给定一个$n$条边,$n$个点的图,每个点只有一条出边(初始状态),现在能够任意对图上的边进行翻转,问你能够使得该有向图不出先环的方案数有多少种. 解题分析: 很 ...
- 【图论】Codeforces 711D Directed Roads
题目链接: http://codeforces.com/problemset/problem/711/D 题目大意: 给一张N个点N条有向边的图,边可以逆向.问任意逆向若干条边使得这张图无环的方案数( ...
- poj 3411 Paid Roads(dfs)
Description A network of m roads connects N cities (numbered to N). There may be more than one road ...
- Codeforces 986C - AND Graph(dfs)
Codeforces 题面传送门 & 洛谷题面传送门 考虑 DFS 一遍遍历每个连通块. 当我们遍历到一个点 \(x\) 时,我们就建立一个虚点 \((2^n-1-x)'\) 表示我们要访问 ...
- Codeforces 930A. Peculiar apple-tree (dfs)
题目: 代码: #include <bits\stdc++.h> using namespace std; ]; //b[i]表示距离1号花絮i步的花絮的个数 map <int, l ...
- CodeForces 711D Directed Roads
计数,模拟. 首先观察一下给出的图的特点: $1.$一定存在环. $2.$可能存在多个环. 我们对每个环计算方案数,假设环$C$上包含$x$条边,那么把环$C$破坏掉的方案数有${2^x} - 2$种 ...
- LeetCode Subsets II (DFS)
题意: 给一个集合,有n个可能相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: 看这个就差不多了.LEETCODE SUBSETS (DFS) class Solution { publ ...
随机推荐
- 从零开始学iPhone开发(4)——使用WebView
转自 总结关于iPhone中UIWEBVIEW读取本地GBK编码格式html 关于webView读取本地GBK编码的html,尝试了两天,终于成功. 欢喜之余,把感想记下来.一般来说,不成都是人犯错, ...
- Zabbix安装图解教程
说明: 操作系统:CentOS IP地址:192.168.21.127 Web环境:Nginx+MySQL+PHP zabbix版本:Zabbix 2.2 LTS 备注:Linux下安装zabbix需 ...
- Doolitter分解 三对角矩阵分解 拟三对角分解
#include <cstdio> #include <cstdlib> #include <algorithm> #include <cmath> # ...
- 不支持关键字“metadata”问题的解决方法
不支持关键字“metadata”问题的解决方法 原来的语句: metadata=res://*/Models.CallCenterEntities2.0.csdl|res://*/Models.Cal ...
- window打开服务的dos命令
window打开服务的dos命令 “开始”---> “运行”输入以下命令,或者Win + R,输入以下命令 对我比较有用的几个: 10. notepad--------打开记事本 31. ...
- windows+linux开发环境 解决laravel blade模板缓存问题
编码环境windows10 编码IDE:phpstorm 2016.2 PHP框架:laravel5.3 + 代码运行环境:centos7 + nginx 在开发过程中,上传blade模板文件到lin ...
- PHP 小方法之 过滤参数
if (! function_exists ( 'parameter_filter' )) { function parameter_filter($str, $type = 'string', $f ...
- myeclipse中disable maven nature
1.直接原因:出现这个问题,一般都是因为手抖误操作. 但是出现了问题,还不知道从何查起. 可能出现的场景是eclipse安装Maven插件后,右键项目却找不到Maven按钮,继而无法编译项目. 2.实 ...
- Retrofit 2.0使用
最近在想能不能把之前项目里的网络请求改下 想通过Retrofit重构下,因为Retrofit完美兼容Rxjava后面会用到Rxjava 所以 开个坑写点 由于网上Retrofit 2.0的架构介绍很详 ...
- GUI 测试
图形用户界面( GUI )对软件测试提出了有趣的挑战,因为 GUI 开发环境有可复用的构件,开发用户界面更加省时而且更加精确.同时, GUI 的复杂性也增加了,从而加大了设计和执行测试用例的难度.因为 ...