//之前一直尝试用vector存储path,但是每次错误后回退上一级节点时不能争取回退,导致探索路径正确,但是输出不正确,用参数num,标记前一个路径点的位置传递参数,就好多了

//其中在输入时就将后继节点按照权值大小排列,是可以学习方法,再输入时就处理好,方便dfs探索,有几道PAT题目都是在该基础上对路径加要求,都可以直接改进输出那一部分代码,更新更和要求的路径,全部遍历完,就可得到所求符合要求的的路径

//参数传递的思想也不错,之前不习惯,总是直接把ans存进vector,最后输出

#include<cstdio>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn=;
const double INF=<<;
struct node
{
int total;
int weight;
vector<int>child;
};
node list[maxn];
queue<int >q;
int path[maxn];
int n,m,s;
bool cmp(int a,int b)
{
return list[a].weight>list[b].weight;
}
void dfs(int v,int num)
{
if(list[v].total>s)return;
if(list[v].total==s)
{
if(list[v].child.size()!=)return ;
for(int j=;j<num;j++)
{
if(j==num-)printf("%d\n",list[path[j]].weight);
else printf("%d ",list[path[j]].weight);
}
}
for(int i=;i<list[v].child.size();i++)
{
int t=list[v].child[i];
list[t].total+=list[v].total;
path[num]=t;
dfs(t,num+);
}
}
int main()
{
freopen("input.txt","r",stdin);
int i,j,k,id,tmp;
while(scanf("%d%d%d",&n,&m,&s)!=EOF)
{
for(i=;i<n;i++)
{
scanf("%d",&list[i].weight);
list[i].total=list[i].weight;
}
for(i=;i<m;i++)
{
scanf("%d%d",&id,&k);
for(j=;j<k;j++)
{
scanf("%d",&tmp);
list[id].child.push_back(tmp);
}
sort(list[id].child.begin(),list[id].child.end(),cmp);
}
dfs(,);
}
return ;
}

PAT1053. Path of Equal Weight的更多相关文章

  1. pat1053. Path of Equal Weight (30)

    1053. Path of Equal Weight (30) 时间限制 10 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue G ...

  2. Path of Equal Weight (DFS)

    Path of Equal Weight (DFS)   Given a non-empty tree with root R, and with weight Wi assigned to each ...

  3. 【PAT】1053 Path of Equal Weight(30 分)

    1053 Path of Equal Weight(30 分) Given a non-empty tree with root R, and with weight W​i​​ assigned t ...

  4. PAT 1053 Path of Equal Weight[比较]

    1053 Path of Equal Weight(30 分) Given a non-empty tree with root R, and with weight W​i​​ assigned t ...

  5. pat 甲级 1053. Path of Equal Weight (30)

    1053. Path of Equal Weight (30) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...

  6. PAT 甲级 1053 Path of Equal Weight (30 分)(dfs,vector内元素排序,有一小坑点)

    1053 Path of Equal Weight (30 分)   Given a non-empty tree with root R, and with weight W​i​​ assigne ...

  7. PAT_A1053#Path of Equal Weight

    Source: PAT A1053 Path of Equal Weight (30 分) Description: Given a non-empty tree with root R, and w ...

  8. 1053 Path of Equal Weight——PAT甲级真题

    1053 Path of Equal Weight 给定一个非空的树,树根为 RR. 树中每个节点 TiTi 的权重为 WiWi. 从 RR 到 LL 的路径权重定义为从根节点 RR 到任何叶节点 L ...

  9. 1053. Path of Equal Weight (30)

    Given a non-empty tree with root R, and with weight Wi assigned to each tree node Ti. The weight of ...

随机推荐

  1. tcp-ip-状态详解(转)

    TCP正常建立和关闭的状态变化     TCP连接的建立可以简单的称为三次握手,而连接的中止则可以叫做 四次握手.   建立连接   在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建 ...

  2. ScalaTour-1.基础

    import java.io.{BufferedReader, File, FileInputStream, InputStreamReader} import java.util import ja ...

  3. DBA_Oracle冷备份和热备份的处理(概念)

    2014-07-27 Created By BaoXinjian

  4. CF478 B. Random Teams 组合数学 简单题

    n participants of the competition were split into m teams in some manner so that each team has at le ...

  5. uboot 的内存命令使用 mw (修改) md (显示)

    修改:mw [内存地址] [值] [长度] 例如:mw 0x02000000 0 128 表示修改地址为0x02000000~0x02000000+128的内存值为0. 显示:md [内存地址] [长 ...

  6. android之location02

    package com.example.mars_3300_location02; import java.net.ContentHandler; import java.util.List; imp ...

  7. Python深入02 上下文管理器

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 上下文管理器(context manager)是Python2.5开始支持的一种语 ...

  8. 解决Ubuntu 12.10中ZIP文件名乱码的方法

    转摘源地址:http://blog.csdn.net/jiangxinyu/article/details/8206395 安装(12.04及以上): 代码: sudo apt-get install ...

  9. [ActionScript 3.0] AS3 访问舞台上元件的方法

    文档类: package { import flash.display.MovieClip; public class Main extends MovieClip { public function ...

  10. 四个排名函数(row_number、rank、dense_rank和ntile)的比较

    排名函数是SQL Server2005新加的功能.在SQL Server2005中有如下四个排名函数: 1.row_number 2.rank 3.dense_rank 4.ntile 下面分别介绍一 ...