SRM559 Div1Medium HatRack
来源:互联网 发布:薛之谦的淘宝男装店 编辑:程序博客网 时间:2024/05/19 15:18
这题比较水
我们先枚举一个点为根,
然后递归下去,
若某一节点儿子的数量不等于它的二叉树上的编号应有的儿子数,则方案不可行,
树形
代码如下:
#include<bits/stdc++.h>using namespace std;#define M 55vector<int>edge[M];int n;int dfs(int x,int pre,int p){ int res=0,sz=edge[x].size(); if(pre==-1)sz++; if(sz>3||sz==3&&2*p>=n||sz==2&&2*p!=n||sz==1&&2*p<=n)return 0; if(sz==3){ if(2*p>=n)return 0; int tmp=1; for(int i=0,k=0;i<edge[x].size();i++){ int y=edge[x][i]; if(y==pre)continue; tmp*=dfs(y,x,p*2+k); k++; } res+=tmp; tmp=1; for(int i=0,k=0;i<edge[x].size();i++){ int y=edge[x][i]; if(y==pre)continue; tmp*=dfs(y,x,p*2+1-k); k++; } res+=tmp; return res; } return 1;}int main(){ int ans=0; scanf("%d",&n); for(int i=1;i<n;i++){ int a,b; scanf("%d %d",&a,&b); edge[a].push_back(b); edge[b].push_back(a); } for(int i=1;i<=n;i++) ans+=dfs(i,-1,1); printf("%d\n",ans); return 0;}
阅读全文
1 0
- SRM559 Div1Medium HatRack
- SRM559
- SRM559 Div1 550 Ear
- SRM 559 Div1 500 HatRack
- SRM548 Div1Medium KingdomAndDice
- SRM551 Div1Medium ColorfulWolves
- SRM573 Div1Medium Ski Resorts
- SRM574 Div1Medium PolygonTraversal
- SRM579 Div1Medium TravellingPurchasingMan
- SRM588 Div1Medium KeyDungeonDiv1
- SRM589 Div1Medium GearsDiv1
- SRM554 Div1Medium TheBrickTowerMediumDivOne
- SRM548 Div1Medium KingdomAndDice
- SRM551 Div1Medium ColorfulWolves
- SRM593 Div1Medium MayTheBestPetWin
- SRM573 Div1Medium Ski Resorts
- SRM579 Div1Medium TravellingPurchasingMan
- SRM588 Div1Medium KeyDungeonDiv1
- 单词数
- 《iOS编程》读书笔记
- 20170709 java课程
- Lesson01_python3之 简介、输入和输出
- Linux系统管理-系统资源查看
- SRM559 Div1Medium HatRack
- swift3.0 类的基本使用
- SVN安装步骤【详细】
- leetcode刷题记录
- 配置maven项目pom.xml出现错误解决代码步骤
- CentOS用iptables自动封IP脚本
- Rails中的HTTP 状态码
- A
- UE4笔记---C++加载BP蓝图及C++BP蓝图文件并创建UUserWidget对象