您的位置:首页 > 其它

uva 699 The Falling Leaves

2017-08-09 19:53 363 查看
题目:The Falling Leaves

题意:树中根节点和左右子节点的距离定为1,输出有同一横坐标的节点的权值和。

思路:dfs遍历。

代码:

#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<vector>
#include<set>
#include<map>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<deque>
using namespace std;

map<int,int> sum;
void dfs(int pos,int value) {
if(!sum.count(pos)) sum[pos]=0;
sum[pos]+=value;
int x,y;
scanf("%d",&x);
if(x!=-1) dfs(pos-1,x);
scanf("%d",&y);
if(y!=-1) dfs(pos+1,y);
return ;
}

int main() {
int T=0;
while(true) {
int x;
scanf("%d",&x);
if(x==-1) break;
sum.clear();
dfs(0,x);
printf("Case %d:\n",++T);
for(map<int,int>::iterator it=sum.begin(); it!=sum.end(); it++) {
if(it!=sum.begin()) printf(" ");
printf("%d",(it->second));
}
printf("\n\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uva dfs