[藍橋杯][2013年第四屆真題]大臣的旅費---(樹的直徑模板+index的坑)

很久以前,T王國空前繁榮。爲了更好地管理國家,王國修建了大量的快速路,用於連接首都和王國內的各大城市。
爲節省經費,T國的大臣們經過思考,制定了一套優秀的修建方案,使得任何一個大城市都能從首都直接或者通過其他大城市間接到達。同時,如果不重複經過大城市,從首都到達每個大城市的方案都是唯一的。
J是T國重要大臣,他巡查於各大城市之間,體察民情。所以,從一個城市馬不停蹄地到另一個城市成了J最常做的事情。他有一個錢袋,用於存放往來城市間的路費。
聰明的J發現,如果不在某個城市停下來修整,在連續行進過程中,他所花的路費與他已走過的距離有關,在走第x千米到第x+1千米這一千米中(x是整數),他花費的路費是x+10這麼多。也就是說走1千米花費11,走2千米要花費23。
J大臣想知道:他從某一個城市出發,中間不休息,到達另一個城市,所有可能花費的路費中最多是多少呢?

輸入的第一行包含一個整數n,表示包括首都在內的T王國的城市數 
城市從1開始依次編號,1號城市爲首都。 
接下來n-1行,描述T國的高速路(T國的高速路一定是n-1條) 
每行三個整數Pi,  Qi,  Di,表示城市Pi和城市Qi之間有一條高速路,長度爲Di千米。  

 

 解題思路:兩遍dfs求出樹的直徑長度maxn,有等差數列ans=maxn*11+maxn*(maxn-1)/2;但是編譯失敗,如下:

 string.h頭文件中包含index函數,重複定義了變量index,所以我把index都改爲了inde了。坑死了~~~~

 

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<vector>
#include<cmath>
#include<string>
#include<map>
#include<queue>
using namespace std;
typedef long long ll;
struct node{
	int y,next_s,val;
}a[100000];
int head[100000];
int  cnt;
void init(){
	memset(head,-1,sizeof(head));
	cnt=0;
}
void add(int x,int y,int val){
	a[cnt].y=y;
	a[cnt].val=val;
	a[cnt].next_s=head[x];
	head[x]=cnt++;
}
ll maxn;
int inde;//index改爲inde 
void dfs(int fa,int id,int sum){
	for(int i=head[id];i!=-1;i=a[i].next_s){
		int y=a[i].y;int val=a[i].val;
		if(y==fa)continue;//防止回溯遞歸 
		if(sum+val>maxn){
			maxn=sum+val;
			inde=y;
		}
		dfs(id,y,sum+val);
	}
	return ;
}

int main(){
	int n,x,y,val;
	cin>>n;
	init();
	for(int i=1;i<n;i++){
		cin>>x>>y>>val;
		add(x,y,val);
		add(y,x,val);
	}
	maxn=0;
	dfs(0,1,0);
	maxn=0;
	int idd=inde;
	dfs(0,idd,0);
	cout<<maxn*11+(maxn-1)*maxn/2<<endl;
	return 0;
}
//            /\       |  /  |**、
//			 /  \      | /   |   \
//			/    \     |/    |   /  _____                      ____   |  /
//		   /------\    |\    |__/  /     \  \      /\      /  /    \  | /
//		  /        \   | \   |    /       \  \    /  \    /  /______\ |/
//		 /          \  |  \  |    \       /   \  /    \  /   \        |
//      /            \ |   \ |     \_____/     \/      \/     \_____  |
/**
 *        ┏┓    ┏┓
 *        ┏┛┗━━━━━━━┛┗━━━┓
 *        ┃       ┃  
 *        ┃   ━    ┃
 *        ┃ >   < ┃
 *        ┃       ┃
 *        ┃... ⌒ ...  ┃
 *        ┃       ┃
 *        ┗━┓   ┏━┛
 *          ┃   ┃ Code is far away from bug with the animal protecting          
 *          ┃   ┃   神獸保佑,代碼無bug
 *          ┃   ┃           
 *          ┃   ┃        
 *          ┃   ┃
 *          ┃   ┃           
 *          ┃   ┗━━━┓
 *          ┃       ┣┓
 *          ┃       ┏┛
 *          ┗┓┓┏━┳┓┏┛
 *           ┃┫┫ ┃┫┫
 *           ┗┻┛ ┗┻┛
 */
// warm heart, wagging tail,and a smile just for you!
//
//                            _ooOoo_
//                           o8888888o
//                           88" . "88
//                           (| -_- |)
//                           O\  =  /O
//                        ____/`---'\____
//                      .'  \|     |//  `.
//                     /  \|||  :  |||//  \
//                    /  _||||| -:- |||||-  \
//                    |   | \\  -  /// |   |
//                    | \_|  ''\---/''  |   |
//                    \  .-\__  `-`  ___/-. /
//                  ___`. .'  /--.--\  `. . __
//               ."" '<  `.___\_<|>_/___.'  >'"".
//              | | :  `- \`.;`\ _ /`;.`/ - ` : | |
//              \  \ `-.   \_ __\ /__ _/   .-` /  /
//         ======`-.____`-.___\_____/___.-`____.-'======
//                            `=---='
//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章