PAT (Advanced Level) 1053. Path of Equal Weight (30)
2016-05-31 18:33
411 查看
简单DFS
#include<cstdio> #include<cstring> #include<cmath> #include<vector> #include<map> #include<queue> #include<stack> #include<string> #include<algorithm> using namespace std; const int maxn=100+10; vector<int>Tree[maxn]; long long val[maxn]; long long path[maxn]; int n,m; long long W; bool cmp(const int &a,const int &b) { return val[a]>val[b]; } void read() { scanf("%d%d%lld",&n,&m,&W); for(int i=0;i<n;i++) scanf("%lld",&val[i]); for(int i=1;i<=m;i++) { int id; scanf("%d",&id); int k; scanf("%d",&k); while(k--) { int to; scanf("%d",&to); Tree[id].push_back(to); } } } void dfs(long long sum,int x,int deep) { if(sum>W) return; if(sum==W) { if(Tree[x].size()==0){ printf("%lld",val[0]); for(int i=0;i<deep;i++) printf(" %lld",path[i]); printf("\n"); } return; } for(int i=0;i<Tree[x].size();i++) { path[deep]=val[Tree[x][i]]; dfs(sum+val[Tree[x][i]],Tree[x][i],deep+1); } } void work() { for(int i=0;i<n;i++) sort(Tree[i].begin(),Tree[i].end(),cmp); dfs(val[0],0,0); } int main() { read(); work(); return 0; }
相关文章推荐
- mysql索引优化
- A + B 问题
- 最佳优先搜索(Best-First Search)
- UITableView使用详解及技巧大全
- Android获取系统震动的调用
- stringbuild和stringbuffer的区别
- CentOS 6.4 x64 Percona-Server-5.6.15 源码安装
- Monitorix 监控 安装配置
- Peer-to-Peer 综述
- 关于写博客的初心
- iOS通讯录排序与显示
- JQuery中的样式切换
- 配置 nginx location 实时查看 php-fpm 的状态
- CentOS 6.4 x64 安装 配置 Redmine 2.4.1
- MySQL必知必会——命令行使用MySQL图文教程
- imageloder缓存图片
- linux 系统安装后网卡配置,解决不能上网(重启后不能上网)(新手篇)
- 一位女程序员的奋斗路程
- NOIP2014 day2 T2 洛谷P2296 寻找道路
- NOIP2014 day2 T2 洛谷P2296 寻找道路