Advertisement

2019 复旦大学工研院上机题-计算通讯代价

阅读量:

题目:
给定一棵树,请计算每个节点与其他所有节点之间的通信开销之和。
例如:
输入:
3
1-连接到-2
2-连接到-3
输出:
根节点为1号时其总开销为4(即自环不计),中间节点(2号)的总开销则为2。
其中,
输入说明:
第一行表示共有n个结点,
接下来n-1行分别表示这些结点之间的连接关系。

给定整数n表示有n个元素存放在一个数组中观察非零元素的具体位置即可确定此处的结果值然后计算每对元素之间的差值绝对值之和需要注意的是输入的数量遵循某种特定规律

  1. 完整代码
复制代码
    #include<iostream>
    #include<cmath>
    using namespace std;
    int main(){
    	int n;
    	cin>>n;
    	int i,j;
    	int b[20]={0};
    	for(i=1;i<=2*(n-1);i++){	//规律,n个数有2(n-1)个输入 
    		int t;
    		cin>>t;
    		b[t]++;
    	}
    	int cnt=0;	//记录输出个数 
    	for(i=1;i<20;i++){
    		int sum=0;	//记录某点到其他各点的距离和 
    		if(b[i]){
    			for(j=1;j<20;j++){
    				if(b[j])
    					sum+=abs(j-i);
    			}
    			cnt++; 
    			cout<<sum;
    			if(cnt!=n)
    				cout<<" "; 
    		} 
    	}
    	return 0;
    }
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    AI写代码
  • 除了给的测试用例,还可以试一下下面的,运行正确
在这里插入图片描述

全部评论 (0)

还没有任何评论哟~