关注
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
void bfs(vector<vector<int> >& data, vector<int>& sumfloor,
vector<bool>& rootflag, int rootnum) {
queue<int> myq;
myq.push(rootnum);
while (!myq.empty()){
int sum = 0;
int size = myq.size(); //每层数目
while (size > 0) {
int nowindex = myq.front();
myq.pop();
//cout << rootflag[nowindex];
if (rootflag[nowindex] == false) {
sum += data[nowindex][0];
}
if (data[nowindex][1] != -1) {
myq.push(data[nowindex][1]);
}
if (data[nowindex][2] != -1) {
myq.push(data[nowindex][2]);
}
rootflag[nowindex] = true;
size--;
}
sumfloor.push_back(sum);
}
}
bool IsASD(vector<vector<int> >& data, vector<bool>& rootflag) {
//找根节点
int rootnum = 0;
for (int i = 0; i < rootflag.size();++i) {
if (rootflag[i] == true) {
rootnum = i;
rootflag[i] = false;
break;
}
}
/*
for (auto num : rootflag) {
cout << num << " ";
}*/
vector<int> sumfloor;
bfs(data, sumfloor, rootflag, rootnum);
int i = 0;
while (i < sumfloor.size()-1) {
if (sumfloor[i] > sumfloor[i + 1]) {
return false;
}
++i;
}
return true;
}
int main() {
int T;
cin >> T;
for (int i = 0; i < T; ++i) {
int N; //节点数
cin >> N;
vector<vector<int> > data(N, vector<int>(3,0));
vector<bool> rootflag(N, true);
for (int j = 0; j < N; ++j) {
cin >> data[j][0] >> data[j][1] >> data[j][2];
if(data[j][1]!=-1) rootflag[data[j][1]] = false;
if (data[j][2] != -1) rootflag[data[j][2]] = false;
}
/*
for (auto num : rootflag) {
cout << num << " ";
}*/
if (IsASD(data, rootflag)) {
cout << "YES" << endl;
}
else {
cout << "NO" << endl;
}
}
system("pause");
return 0;
}
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
170271次浏览 2869人参与
# 找工作,行业重要还是岗位重要? #
85114次浏览 1683人参与
# 职场上哪些行为很加分? #
306368次浏览 3447人参与
# 大家每天通勤多久? #
69344次浏览 440人参与
# 你面试体验感最差/最好的公司 #
15777次浏览 259人参与
# 实习的内耗时刻 #
210736次浏览 1537人参与
# 一人说一个提前实习的好处 #
9533次浏览 192人参与
# 互联网行业现在还值得去吗 #
46812次浏览 351人参与
# 今年你最想重开的一场面试是? #
3455次浏览 64人参与
# 秋招落幕,你是He or Be #
9953次浏览 206人参与
# 重来一次,你会对开始求职的自己说 #
5628次浏览 142人参与
# 实习没事做是福还是祸? #
15783次浏览 239人参与
# 反问环节如何提问 #
126308次浏览 2663人参与
# 礼物开箱Plog #
563次浏览 21人参与
# 团建是“福利”还是是 “渡劫” #
6749次浏览 144人参与
# 我的第一份实习怎么找的 #
208425次浏览 1827人参与
# 工作中听到最受打击的一句话 #
5772次浏览 104人参与
# 比亚迪工作体验 #
74260次浏览 281人参与
# 你小心翼翼的闯过多大的祸? #
10690次浏览 156人参与
# 大厂VS公务员你怎么选 #
74249次浏览 681人参与
查看9道真题和解析