(C++)1046 Shortest Distance

Posted CSU迦叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(C++)1046 Shortest Distance相关的知识,希望对你有一定的参考价值。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

int friendDis[100010] = {0};//邻居节点间的距离 
int withStDis[100010] = {0};//和第一个结点的距离 --本题的题眼,空间换时间的典例

int main(){
	
	int dis_num,test_num,withst_dis = 0;
	scanf("%d",&dis_num);
	for(int i=1;i<=dis_num;i++){
		scanf("%d",&friendDis[i]);
		withst_dis += friendDis[i];
		withStDis[i+1] = withst_dis;
		
	}
	scanf("%d",&test_num);
	
	int exitA,exitB;
	while(test_num--){
		scanf("%d %d",&exitA,&exitB);
		if(exitA>exitB){//默认出口A的序号小于B 
			swap(exitA,exitB);
		}
		
		//现在要做的事情是把两边的距离都算出来,进行比较
		int one_dis = 0,ana_dis = 0;
		
		one_dis = withStDis[exitB] - withStDis[exitA];
		
		ana_dis = withst_dis - one_dis;
		
		printf("%d\\n",one_dis<ana_dis?one_dis:ana_dis);
		 
	}
	
	return 0;
}

int withStDis[100010] = {0};//和第一个结点的距离 --本题的题眼,空间换时间的典例
 

以上是关于(C++)1046 Shortest Distance的主要内容,如果未能解决你的问题,请参考以下文章

1046 Shortest Distance (20分)

PAT——甲级1046S:shortest Distance

pat 1046 Shortest Distance(20 分) (线段树)

A1046——入门模拟 Shortest Distance

PAT甲级1046 Shortest Distance (20 分)

1046 Shortest Distance (20 分)(简单模拟,前缀和)