本文共 1060 字,大约阅读时间需要 3 分钟。
题目传送门:
AC代码
//不难 但一定要细心,要求是叶子节点到根的weight之和,叶子节点 根,缺一不可.
#include #include #include #include #include #include #include #include using namespace std;struct Node{ int weight,id,childNum; Node * parent; Node(int _id,int _weight):weight(_weight),id(_id),parent(NULL),childNum(0){};};int main(){ int N,M,t,targetWeight,id,k; scanf("%d %d %d",&N,&M,&targetWeight); vector tree; for (int i=0; i childNum = k; for (int j=0; j parent = tree[id]; } } vector >allPath; for (int i=0; i childNum) continue; vector curPath; while (true) { curWeight = curWeight + p->weight; curPath.push_back(p->weight); if(curWeight ==targetWeight){ if(p==tree[0]) allPath.push_back(curPath); break; } else if(curWeight>targetWeight) break; p = p->parent; if(!p) break; } } sort(allPath.begin(), allPath.end(), [](vector a,vector b){ reverse(a.begin(), a.end()); reverse(b.begin(), b.end()); int len = a.size() b[i]; break; } } return flag; }); for (int i=0; i =0; --j) { printf(j==0?"%d\n":"%d ",allPath[i][j]); } } return 0;}
转载地址:http://dqhji.baihongyu.com/