【SRM-05 B】无题?

Description

有一个拥有n个城市的国家。这个国家由n-1条边连接起来。有一天国家发生叛乱。叛军已占领了一些城市。如果叛军占领的城市中,存在两个城市之间有边直接相连,则称这种情况是坏的。现在并不知道叛军占领了那些城市,问有多少种情况是坏的?

Input

第1行一个正整数n,表示国家的大小

第2行到第n行,每行两个数字x, y,表示x,y之间有一条边。

Output

一个整数表示方案数,答案对(1e9+7)取模

Sample Input

2

1 2

Sample Output

1

HINT

1 <= n <= 1e5,1<=x,y<=n,x≠y

 

以下题解搬运自出题人yyl:“直接做dp应该也是可以的。但是补集转化之后,我们发现其实就是问从点集V中选出若干个点构成点集S,满足S是一个独立集(即S中任意两点没有边直接相连)。设方案数为x。答案就是2^n -x。”

补充:最后输出2^n -x时因为涉及取模,要注意处理负数的情况。

 

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<cstring>
 4 #define ll long long
 5 using namespace std;
 6 const int N=1e5+5;
 7 const int mod=1e9+7;
 8 int n,x,y,cnt,head[N];
 9 struct edge{int to,next;}e[N*2];
10 ll ansn=1,dp[N][2];
11 int read()
12 {
13     int x=0,f=1;char c=getchar();
14     while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
15     while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
16     return x*f;
17 }
18 void ins(int u,int v){cnt++;e[cnt].to=v;e[cnt].next=head[u];head[u]=cnt;}
19 void solve(int x,int fa)
20 {
21     dp[x][1]=dp[x][0]=1;
22     for(int i=head[x];i;i=e[i].next)
23     {
24         int to=e[i].to;
25         if(to==fa)continue;
26         solve(to,x);
27         dp[x][0]=(dp[to][0]+dp[to][1])%mod*dp[x][0]%mod;
28         dp[x][1]=dp[to][0]*dp[x][1]%mod;
29     }
30 }
31 int main()
32 {
33     n=read();
34     for(int i=1;i<n;i++)
35     {
36         x=read();y=read();
37         ins(x,y);ins(y,x);
38     }
39     solve(1,0);
40     for(int i=1;i<=n;i++)ansn=(ansn*2)%mod;
41     printf("%lld",((ansn-dp[1][0]-dp[1][1])%mod+mod)%mod);
42     return 0;
43 }
View Code

转载于:https://www.cnblogs.com/zsnuo/p/7169713.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283092.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MapReduce 2 中一些基础数据类型

1. LongWritable, IntWritable, Text 均是 Hadoop 中实现的用于封装 Java 数据类型的类&#xff0c;这些类实现了WritableComparable接口&#xff0c;都能够被串行化从而便于在分布式环境中进行数据交换&#xff0c;以及进行大小比较。你可以将它们分别视为long,int,String 的替…

分享一些 Java 后端的个人干货

学习 Java 也有了不少时间&#xff0c;入 Java 后台的坑也有了一段时日。这段时间里&#xff0c;听过许多前辈的经验与分享&#xff0c;也看过许多大佬的文章和作品。找了个时间整理和总结了一下我个人到目前为止一路以来的听到看到或者自己感悟到的干货。 这篇文章可能更多的是…

.NET MAUI实战 Routing

1.详情本章继续分享.NET MAUI中的路由&#xff0c;这个概念依旧是在Prism里存在过的概念。如果使用过Prism框架的小伙伴使用该机制上手速度是非常快的。接下来一起来看看什么是路由。.NET 多平台应用 UI (.NET MAUI) Shell 包含基于 URI 的导航体验&#xff0c;该体验使用路由导…

分享Web应用运行的细节问题:预编译提高网站性能、跟踪用户习惯和解决线程同步...

在这个文章里&#xff0c;我将分享一下在iOpenWorks.com这个网站试运行中碰到的若干问题和解决方案&#xff0c;这些问题包含了&#xff1a;&#xff08;1&#xff09;如何通过ASP.NET MVC预编译提高性能&#xff1b;&#xff08;2&#xff09;如何知道网站在运行中&#xff0c…

mondrain配置mysql_mondrian 4.7 源码部署(示例代码)

mondrian是一个开源的数据分析工程, 网上有关mondrian3.X的源码部署比较多, 有关4.X的部署较少. 目前官方推荐使用的时mondrian3.7的修订版, 可以再github上下载到最近更新维护的mondrian-master, 下载下来后基本上只需要按部就班的使用maven build一下就可以正常使用了, 如有问…

腾讯云DevOps技术揭秘:新时代运维重器Tencent Hub最佳实践

随着云计算和容器技术的发展以及微服务架构的兴起&#xff0c;服务能够实现细粒度的部署&#xff0c;维护和伸缩。在使开发人员能快速开发的同时&#xff0c;这些技术也给系统和应用的运维带来了更大的挑战。DevOps理念也应运而生&#xff0c;强调研发和运维的流程及工具的自动…

关于内存的划分和传引用传参数的区别

1.堆 2.栈 空间较小 3.全局 4.代码段 要搞懂每个区域放什么东西 堆 复杂类型栈 变量静 代复杂类型对象没有指针指的时候&#xff0c;堆中的内容垃圾回收1函数传对象的时候&#xff0c;其实是首先在堆里面开一个内存放对象属性内容&#xff0c;在栈里面开一个内存放一个变量&…

.Net CoreRabbitMQ消息存储可靠机制(下)

前言上篇讨论过消息投递和消息消费过程中如何确保可靠传输&#xff0c;也提及到消息到达RabbitMQ中到被消费前也需要可靠的留存&#xff0c;可因许多的不确定因素会影响着消息的存在与否。消息中转点生产者发送消息到RabbitMQ中&#xff0c;如果交换机根据自身类型和RoutingKey…

nginx安装及负载均衡配置

Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器&#xff0c;也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的&#xff0c;第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发…

java怎么获取该项目系统的参数_Java 获取系统参数

Java 获取系统参数2014/5/22 12:57:44 a920829018 程序员俱乐部 我要评论(0)摘要&#xff1a;通过System.getProperties()获取系统参数PropertiespropsSystem.getProperties();//系统属性System.out.println("Java的运行环境版本&#xff1a;"props.getProperty(&…

智能停车O2O 独角兽初现:“ETCP停车”获5000万美金A轮融资

日前&#xff0c;国内第一智能停车平台“ETCP停车”宣布完毕A轮融资&#xff0c;由源代码资本、SIG、易车网、经纬中国和商企界知名人士联合投资超过5000万美金。同一时候获悉&#xff0c;ETCP作为中国智能停车行业龙头老大&#xff0c;不仅是该行业的创建者和领军品牌&#xf…

没有人会觉得正则表达式难写

1. RegExp对象 JavaScript有两种方式实例化RegExp对象 字面量构造函数字面量 const reg /all/; console.log(reg); // /all/ This is all I have..replace(reg, ALL); // This is ALL I have. 复制代码构造函数 const reg new RegExp(all); console.log(reg); // /all…

ASP.NET MVC使用Bootstrap系统(2)——使用Bootstrap CSS和HTML元素

阅读目录 Bootstrap 栅格&#xff08;Grid&#xff09;系统Bootstrap HTML元素Bootstrap 验证样式ASP.NET MVC创建包含Bootstrap样式编辑模板小结Bootstrap提供了一套丰富CSS设置、HTML元素以及高级的栅格系统来帮助开发人员快速布局网页。所有的CSS样式和HTML元素与移动设备优…

sublime-text3按tab跳出括号

功能 通过按tab自动跳过右括号,右引号,虽然也可以按右方向键,但离得太远按起来太麻烦 在首选项->按键绑定里添加: { "keys": ["tab"], "command": "move", "args": {"by": "characters", "forw…

VS2017调试闪退之Chrome

原文:VS2017调试闪退之Chrome巨硬build后发了15.7.1满载期待的升级了。。结果NM泪奔................... 为啥 泪奔&#xff1f; 使用Chrome 调试闪退&#xff0c;MMP ,一想肯定是VS的锅咯&#xff0c;各种抓头发。。 试试看看VS配置发现 &#xff0c;多了点东西。。 都勾上后&…

python中的threading_关于Python中的线程,之,threading,初探

threading库主要用于基于线程的并行&#xff0c;核心就是Thread类class threading.Thread(groupNone, targetNone, nameNone, args(), kwargs{}, *, daemonNone)并行是什么就不谈了&#xff0c;用threading的主要目的就是为了实现多个任务的并行&#xff0c;比如WiFi throughpu…

ios UISearchBar搜索框的基本使用

摘要: 小巧简洁的原生搜索框&#xff0c;漂亮而易用&#xff0c;如果我们的应用没有特殊需求&#xff0c;都可以使用它。iOS中UISearchBar(搜索框)使用总结 初始化&#xff1a;UISearchBar继承于UIView&#xff0c;我们可以像创建View那样创建searchBar UISearchBar * bar [[U…

Win8下怎样安装Win7 or Win7下怎样安装win8?

预计非常多人可能会用U盘安装工具去去做双系统的安装&#xff08;Win8下安装Win7&#xff0c; Win7下安装Win8&#xff09;。可是在安装过程中你 会发现一个问题&#xff1a;win7下安装win8&#xff0c;提示你mbr硬盘格式不能安装win8&#xff1b;win8下安装win7&#xff0c;提…

Linux 练习题-3文件与磁盘 问答

1、描述Liux下软链接和硬链接的区别创建命令不同&#xff0c;ln 命令创建硬链接&#xff0c;ln -s 创建软链接inode节点号不同&#xff0c;硬链接inode与源文件相同&#xff0c;软链接inode与源文件不同使用对象不同&#xff0c;硬链接只能对文件使用&#xff0c;软链接可以对文…

.NET Offer 快到碗里来!.NET 招聘季

关注我们谈到 .NET 在中国的推广和发展&#xff0c;.NET 开发者求职就业及 .NET 企业招人用人的问题往往常被提及。初学者会担心学习 .NET 之后的就业问题&#xff0c;.NET 开发者在求职过程中没有足够多的渠道来获取 .NET 招聘信息&#xff0c;而与此同时&#xff0c;采用 .NE…