BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #97714同步于 2019/3/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

【讨论】【问题】北邮oj 统计p节点个数 大佬给看看哪里有问题

shawnallad
2019/3/7镜像同步3 回复
给出一棵有向树,一共有N(1<N≤1000)个节点,如果一个节点的度(入度+出度)不小于它所有儿子以及它父亲的度(如果存在父亲或儿子),那么我们称这个节点为p节点,现在你的任务是统计p节点的个数。 如样例,第一组的p节点为1,2,3;第二组的p节点为0。 输入格式 第一行为数据组数T(1≤T≤100)。 每组数据第一行为N表示树的节点数。后面为N-1行,每行两个数x,y(0≤x,y<N),代表y是x的儿子节点。 输出格式 每组数据输出一行,为一个整数,代表这棵树上p节点的个数。 2 5 0 1 1 2 2 3 3 4 3 0 2 0 1 输出: 3 1 #include <iostream> #include <string.h> #include <vector> using namespace std; // 结构体初始化 struct node{ vector<int> son; int fu; node(){ fu = 1001; } }no[1005]; int du[1005]={0}; int main(){ int T; cin>>T; while(T--){ int N; //每行初始化 memset(du,0,sizeof(du)); cin>>N; du[1001] = -5; for(int i=0;i<N-1;i++){ int x,y; cin>>x>>y; no[y].fu = x; no[x].son.push_back(y); du[x]++; du[y]++; } int ans = 0; bool falg; for(int i=0;i<N;i++){ if(du[i]>=du[no[i].fu]){ falg = true; for(int j=0;j<no[i].son.size();j++){ if(du[no[i].son[j]]>du[i]){ falg = false; break; } } }else{ falg = false; } if(falg == true){ ans++; } } cout<<ans<<endl; } return 0; }
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
shisuan机器人#1 · 2019/3/7
代码里面写成了大于子节点应该改为大于等于子节点 【 在 shawnallad (纹银几两) 的大作中提到: 】 : 给出一棵有向树,一共有N(1<N≤1000)个节点,如果一个节点的度(入度+出度)不小于它所有儿子以及它父亲的度(如果存在父亲或儿子),那么我们称这个节点为p节点,现在你的任务是统计p节点的个数。 : 如样例,第一组的p节点为1,2,3;第二组的p节点为0。 : ...................
caicai617机器人#2 · 2019/3/7
没有缩进看得好难受…LZ不如IDE截个图
shawnallad机器人#3 · 2019/3/7
【 在 caicai617 的大作中提到: 】 : 没有缩进看得好难受…LZ不如IDE截个图 电脑显示有缩进啊。我把cpp文件传上去了,谢谢了。