HDU5326.Work
2015-07-29 14:33
260 查看
签到题,数据也比较小,直接dfs即可。你也可以用你喜欢的任一种方法AC。
[code]#include <map> #include <set> #include <stack> #include <queue> #include <cmath> #include <ctime> #include <vector> #include <cstdio> #include <cctype> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> using namespace std; #define INF 0x3f3f3f3f #define inf -0x3f3f3f3f #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define mem0(a) memset(a,0,sizeof(a)) #define mem1(a) memset(a,-1,sizeof(a)) #define mem(a, b) memset(a, b, sizeof(a)) typedef long long ll; const int maxn=1001; vector<int>G[maxn]; int tree[maxn]; int vis[maxn]; void dfs(int u){ vis[u]=1; tree[u]=0; for(int i=0;i<G[u].size();i++){ if(vis[G[u][i]]){ tree[u]=tree[u]+tree[G[u][i]]+1; continue; } dfs(G[u][i]); tree[u]=tree[u]+tree[G[u][i]]+1; } return ; } int main(){ int n,k; //freopen("1011.in","r",stdin); //freopen("1011.out","w",stdout); while(scanf("%d%d",&n,&k)!=EOF){ for(int i=1;i<=n;i++) G[i].clear(); int x,y; for(int i=1;i<n;i++){ scanf("%d%d",&x,&y); G[x].push_back(y); } mem0(vis); mem0(tree); for(int i=1;i<=n;i++){ if(!vis[i]) dfs(i); } int count1=0; for(int i=1;i<=n;i++){ if(tree[i]==k) count1++; } printf("%d\n",count1); } return 0; }
相关文章推荐
- CircleImageView自定义圆形控件的使用
- ${}的用法
- 跳伞的时候,伞包拉不开,如何自救?在线等... ..
- hdu5312 Sequence 三角形数的应用
- eclipse|studio 导出hprof 后用MAT显示报错Unknown HPROF Version
- 一亩田创始人邓锦宏:当农民在田里也能用手机上网,事情就成了
- goroutine背后的系统知识
- goroutine背后的系统知识
- 分层模式:OOP分页管理系统
- 自考--初读
- Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity
- [IOS]音频的后台播放和远程控制
- 1062. Talent and Virtue (25)
- dmesg命令处理故障和收集系统信息的7种用法
- 使用Butterknife注解出现nullPointerException异常
- 1062. Talent and Virtue (25)
- IOS经典的书籍推荐
- Windows 10正式版发布会现场直播直播 7月29日19:00开始
- 组合设计模式
- 如何配置一个 Docker Swarm 原生集群